集合体系结构

list集合特点:添加到元素是有序、可靠、有索引
Set集合特点:添加的元素是无序、不重复、无索引
Collection 是单列集合的祖宗接口,他的功能是全部单列集合都可以继承使用的

常用方法示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("aaa"); coll.add("bbb"); coll.add("ccc"); System.out.println(coll);
System.out.println(coll.remove("aaa")); System.out.println(coll);
boolean result1 = coll.contains("bbb"); System.out.println(result1);
boolean result2 = coll.isEmpty(); System.out.println(result2);
coll.add("ddd"); int size = coll.size(); System.out.println(size);
}
|
面试题:为什么重写 equals 还要重写 hashcode?
对于任何一个对象,不论是使用继承自Object的equals方法还是重写equals方法。hashCode方法实际上必须要完成的一件事情就是,为该equals方法认定为相同的对象返回相同的哈希值。如果只重写equals方法没有重写hashCode方法,就会导致equals
认定相同的对象却拥有不同的哈希值。就违背了hashCode方法中“相同对象必须有相同哈希值”的约定。
Colletion遍历方式
迭代器遍历

代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public static void main(String[] args) {
Collection<String> coll = new ArrayList<>(); coll.add("aaa"); coll.add("bbb"); coll.add("ccc"); coll.add("ddd");
Iterator<String> it = coll.iterator(); while(it.hasNext()){ String str = it.next(); System.out.println(str); }
}
|
迭代器的细节注意点:
- 报错NoSuchElementException
- 迭代器遍历完毕,指针不会复位
- 循环中只能用一次next方法
- 迭代器遍历时,不能用集合的方法进行增加或者删除
增强for遍历
- 增强for的底层就是迭代器,为了简化迭代器的代码书写的。
- 它是JDK5之后出现的,其内部原理就是一个lterator迭代器
- 所有的单列集合和数组才能用增强for进行遍历。
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public static void main(String[] args) {
Collection<String> coll = new ArrayList<>(); coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu");
for(String s : coll){ s = "qqq"; }
System.out.println(coll); }
|
增强for的细节
修改增强for中的变量,不会改变集合中原本的值
lambda表达式遍历
得益于JDK 8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public static void main(String[] args) {
Collection<String> coll = new ArrayList<>(); coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu");
coll.forEach(s -> System.out.println(s)); }
|
