集合概念
集合是java中提供的一种容器,可以用来存储多个数据。
集合与数组的区别
·数组的长度是固定的,集合的长度是可变的。
·数组中存储的是同一类型的元素,可以存储基本类型数据。而集合存储的都是对象。
Collection集合
Collection:单例集合最顶层接口
List extends Collection:
子类:
ArrayList集合,LinkedList集合,Vector集合。
特点:
List集合:有索引,可以存储重复元素,可以保证存储顺序。
ArrayList:底层是数组实现的,查询快,增删慢。
LinkedList:底层是链表实现的,查询慢,增删快。
Set extends Collection:
子类:
HashSet,LinkedHashSet,TreeSet。
特点:
无索引,不可以存储重复元素,存取无序。
HashSet:底层是哈希表+红黑树实现的,无索引,不可以存储重复元素,存取无序。
LinkedHashSet:底层是哈希表+链表实现的,无索引,不可以存储重复元素,可以保证存储顺序。
TreeSet:底层是二叉树实现的,一般用于排序。
Collection集合的常用功能
Collection<String> coll = new ArrayList<>();
coll.add("迪丽热巴");
coll.add("古力娜扎");
coll.add("马尔扎哈");
coll.add("雷霆嘎巴");
System.out.println(coll);
coll.clear();
System.out.println(coll);
boolean result = coll.remove("马尔扎哈");
System.out.println(coll);
System.out.println(result);
boolean b1 = coll.contains("迪丽热巴");
System.out.println(b1);
boolean b2 = coll.isEmpty();
System.out.println(b2);
int size = coll.size();
System.out.println(size);
Object[] arr = coll.toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
Iterator接口介绍(遍历集合)
迭代概念
即Collection集合元素的通用遍历方式。
在去元素之前先要判断集合里有没有元素,如果有,就把这个元素取出来,然后循环继续判断,直到全部取出。
这种取出方式叫做迭代。
常用方法
1.boolean hasNext();
判断集合中有无下一个元素,有返回true,无返回false。
2.E next();
取出集合中的下一个元素。
Iterator迭代器是一个接口,无法直接使用,需要使用实现类对象。
而获取实现类对象方式比较特殊,在Collection中有一个方法叫做iterator(),这个方法返回的就是实现类对象。
迭代器的使用步骤
Collection<String> coll = new ArrayList<>();
Iterator<String> it = coll.iterator();
boolean b = it.hasNext();
String str = it.next();
while(it.hasNext) {
System.out.println(it.next());
}
增强for循环(foreach)
增强for循环:底层使用的是迭代器,JDk1.5后出现的新特性。
tips:必须有被遍历的目标,目标只能是Collection、数组。
遍历集合
ArrayList<String> list = new ArrayList<>();;
list.add("扎");
list.add("哇");
for (String s : list) {
System.out.println(s);
}
遍历数组
int[] arr = {1,2,3,4,5};
for (int i : arr) {
System.out.println(i);
}