集合
集合是java中提供的一种容器,可以用来存储多个数据。
注意:
①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,
其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。
②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。
③、集合可以存放不同类型,不限数量的数据类型。
用ArrayList集合存储int类型数组:
1 public static void main(String[] args) { 2 3 ArrayListarr=new ArrayList (); 4 arr.add(1); 5 arr.add(12); 6 arr.add(2); 7 for(int i=0;i
ArrayList集合存储5个Person类型元素:
1 ArrayListarr=new ArrayList ();2 arr.add(new Person("小猪佩奇",18));3 arr.add(new Person("乔治",17));4 arr.add(new Person("熊大",16));5 arr.add(new Person("熊二",15));6 for(int i=0;i
集合的继承实现关系
查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口。
Collection接口为最顶层集合接口了。
Collection接口概述:
Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用,不过Collection接口定义了一些通用的方法,
通过这些方法可以实现对集合的基本操作,因为List接口和Set接口继承自Collection接口,
所以这些方法对List集合和Set集合是通用的。
Collection接口的基本方法:
创建集合的格式:
1 方式1:Collection <元素类型> 变量名 = new ArrayList <元素类型> ();2 方式2:Collection 变量名 = new ArrayList(); 元素类型> 元素类型>
方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式
方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。
代码展示:
1 public static void main(String[] args) { 2 Collectioncon=new ArrayList (); 3 con.add("粉猪佩奇"); 4 con.add("巴啦啦小魔仙"); 5 con.add("全身变"); 6 con.add("乌卡拉"); 7 con.add("变身"); 8 boolean flag=con.contains("巴啦啦大魔仙"); 9 System.out.println(flag);10 con.remove("变身");11 //con.clear();12 con.toArray();13 for(int i=0;i arr=(ArrayList )con;15 System.out.println(arr.get(i));16 }17 }
Iterator迭代器
一、Iterator迭代器概述
java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。
Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,
如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
Iterator接口的常用方法:
代码展示:
1 public static void main(String[] args) { 2 ArrayListarr=new ArrayList (); 3 arr.add(1); 4 arr.add(12); 5 arr.add(2); 6 //1.获取Iterator对象 7 //Iterator it=arr.iterator(); 8 //while循环取出元素 9 /*while(it.hasNext()){10 System.out.println(it.next());11 }*/12 //for循环迭代13 for(Iterator it=arr.iterator();it.hasNext();){14 System.out.println(it.next());15 }16 /*//2.判断集合下一位是否有元素17 boolean flag=it.hasNext();18 System.out.println(flag);19 //3.获取元素20 System.out.println(it.next());*/21 22 }
图解:
Iterator迭代方式的代码体现:
1 //1,创建集合对象。 2 Collectioncoll = new ArrayList (); 3 coll.add("abc1"); 4 coll.add("abc2"); 5 coll.add("abc3"); 6 coll.add("abc4"); 7 8 //2.获取容器的迭代器对象。通过iterator方法。 9 Iterator it = coll.iterator();10 11 //3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法12 while(it.hasNext()){13 System.out.println(it.next());14 }15 16 /*17 迭代器for循环的形式的使用18 for (Iterator it = coll.iterator(); it.hasNext(); ) {19 System.out.println(it.next());20 }
集合元素的向下转型
1 public static void main(String[] args) { 2 Collectioncon=new ArrayList (); 3 con.add("粉猪佩奇"); 4 con.add("巴啦啦小魔仙"); 5 con.add("全身变"); 6 con.add("乌卡拉"); 7 con.add("变身"); 8 Iterator it=con.iterator(); 9 while(it.hasNext()){10 Object obj=it.next();11 String str=(String)obj;//如果不加泛型 需要向下转型12 System.out.println(str.length());13 }14 }
增强for循环
格式:
for(元素的数据类型 变量 : Collection集合or数组){}
1 public static void main(String[] args) { 2 ArrayListarr=new ArrayList (); 3 arr.add(1); 4 arr.add(12); 5 arr.add(2); 6 //普通for 7 for(int i=0;i
练习:
定义方法frequency统计集合中指定元素出现的次数,如"a" 3,"b" 2,"c" 1
import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class text { public static void main(String[] args) { Listlist = new ArrayList (); list.add("a"); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); System.out.println(frequency(list, "a")); System.out.println(frequency(list, "b")); System.out.println(frequency(list, "c")); System.out.println(frequency(list, "d")); System.out.println(frequency(list, "xxx")); } public static int frequency(List arr,String a){ int num=0; Iterator it=arr.iterator(); while(it.hasNext()){ if(it.next()==a){ num+=1; } } return num; }}
2.某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性(String)、班级名称属性(String)和考试成绩属性(double)
某次考试结束后,每个学生都获得了一个考试成绩。遍历list集合,并把学生对象的属性打印出来。public class person { private String name; private String class_name; private double score; public person(String name, String class_name, double score) { super(); this.name = name; this.class_name = class_name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getClass_name() { return class_name; } public void setClass_name(String class_name) { this.class_name = class_name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } //重写toString public String toString() { return "姓名:" + name + "\t班级:" + class_name + "\t成绩:" + score; } }
import java.util.ArrayList;public class student { public static void main(String[] args) { person p1=new person("劳拉","java01",100); person p2=new person("萨曼莎","java02",90); person p3=new person("约拿","java03",80); ArrayListstu=new ArrayList (); stu.add(p1); stu.add(p2); stu.add(p3); //循环打印 for(person i:stu){ System.out.println(i); } }}