数组和集合都是对多个数据进行存储的,也叫java容器
一、数组和集合框架的区别
- 1.数组只能存储相同类型的数据 int[] arr=new int[10];表示arr只能保存整数,而集合可以存储不同类型的数据
- 2.数组可以保存基本数据类型的数据,也可以保存引用数据类型的数据,而集合框架只能保存对象(集合框架里面的数据都是对象)
- 3.数组的弊端: 数组的长度一旦定义,是不可改变的,例:Student[] stu=new Student[10[];这个数组只能保存10个学生信息,而集合可以存储数据量不确定的数据
二、集合框架的分支(重点学习List和Map)
- Collection接口(单列接口,存储一个个对象)下有两个子接口:List和Set
(1) List接口:存储有序的,可以重复的数据 (动态数组)
List的实现类:ArrayList(主要实现类)、LinkedList、Vertor)
(2) Set接口:存储无序的,不可重复的
Set的实现类:HashSet(主要实现类)、LinkHashSet、TreeSet - Map接口:多列集合,用来存储一对(key-value)一对的数据(key不可重复,value可以)
实现类:HashMap、LinkHashMap、TreeMap、Hashtable、Properties
三、Collection接口的常用方法
- size():返回集合中元素的个数(集合的长度)
// 创建一个集合
Collection coll = new ArrayList();
// 1 size():返回集合中元素的个数(集合的长度)掌握
System.out.println(coll.size());
- add(Object o):添加元素
coll.add(1);// 1不是int类型,是int的包装类,集合保存的都是对象
- addAll(Collection c):把集合c里面所有的元素添加到当前集合中
Collection c = new ArrayList();
c.add("abc");
c.add("abc");
coll.addAll(c);
- isEmpty():判断当前集合是否为空,如果为空就为true
System.out.println(coll.isEmpty());// false
- clear():清空集合中的元素
coll.clear();
System.out.println(coll.isEmpty());
- contains(Object o):判断当前集合中是否包含指定元素o,判断的时候会调用o对象所在类的equals()
boolean b1 = coll.contains(123);
System.out.println(b1);// true
- containsAll(Collection c):判断集合c中所有元素是否都在当前集合中
- remove(Object o):删除集合中的元素o
boolean b4 = coll.remove(123);
System.out.println(b4);// true
- removeAll(Collection c):从当前集合中删除另一个集合c中所有的元素
Collection c = new ArrayList();
c.add("aaa");
c.add("abc");
System.out.println(coll.removeAll(c));// true 如果有一个符合条件就删除成功
- toArray():将集合转成一个数组
Object[] objs = c.toArray();
for(Object o:objs){
System.out.println(o);
}
- equals():判断两个集合的元素值是否相等
- hashCode():返回当前对象的哈希值
四、遍历集合的三种方法
- 迭代器 Iterator
Collection coll = new ArrayList();
coll.add(1);// 这不是int类型,是int的包装类,集合保存的都是对象
coll.add("思雨");
coll.add(10.1);
coll.add(new Date());
coll.add("abc");
coll.add("abc");
Iterator i = coll.iterator();// 返回一个iterator接口
// 第一种方式 几乎不用
System.out.println(i.next());
System.out.println(i.next());
System.out.println(i.next());
System.out.println(i.next());
System.out.println(i.next());
System.out.println(i.next());
// hashNext():判断当前集合中是否有下一个元素
while(i.hasNext()){
// next():1.指针下移 2.输出下移后当前集合位置元素的值
System.out.println(i.next());
}
- 增强for循环
// for(集合元素的类型 局部变量 :集合名)
for (Object o : coll){
System.out.println(o);
}
- 把集合转成数组,遍历数组(针对List)
// 把集合转成数组
Object[] objects = coll.toArray();
for(Object o : objects){
System.out.println(o);
}
// 把一个数组转成集合
List list = Arrays.asList(new String[]{"aaa","bbb"});
for(Object str : list){
System.out.println(str);
}