集合,Collections知识点的快速复习

97 阅读3分钟

集合

一,分类

image.png

(1)单列集合 Collection

image.png

特点分析:

image.png

**注意事项一:1,Set集合下的LinkedHashSet 有序(以什么顺序输入,就以什么顺序输出),不可重复,无索引

**注意事项二: 2,TreeSet 会自动排序,不可重复,无索引。TreeSet 如果存入的是基本类型和字符串,那么直接输出,TreeSet会自动排序。TreeSet 如果存入的是自定义对象,例如Student类 那么就需要自己写排序方法(排序2种方法如下)

image.png 方法一代码展示:

image.png

方法二代码展示:

image.png 方法二原理:

image.png

***注意事项三:3,Collection种的所有类 都可以同过 iterator,增强for,Lambda(forEach)进行遍历。 List因为有索引,同时还可以通过for循环来遍历。

**注意事项三:4,HashSet 如果需要添加自定义对象,例如(Student类),则该实体类必须重写hashCode()和equals()方法,如果不重写,默认以地址进行比较,无法做到不重复,所以需要重写两个方法。

**注意事项三:5,通过LinkedList addFirst(),addList(),removeFist(),removeLase(),push(),pop(); 通过以链的结构和这些方法,去实现栈,队列 的数据结构。

**注意事项三:6,集合在遍历过程种不允许去进行删除操作,如果非要进行删除操作,只能在iterator遍历过程中通过迭代器中的remove()方法进行操作。

Collection常用方法:

image.png

Collection集合遍历:
1)迭代器(Iterator)遍历

image.png

image.png

Iterator遍历注意事项:

1,注意报错 NoSuchElementException

2,当上面的循环结束后,迭代器的指针已经到了最后没有元素的位置 迭代器遍历完毕,指针不会复位

3,循环中只能调用一个next方法(例如,如果有两个next(),当集合中元素是奇数时,总会有一个没有元素而报错)

4,迭代器遍历时,不能 用集合的方法进行增加或则删除。 删除时,可以使用迭代器中的remove()方法进行删除。

2)增强for循环遍历(所有的单列集合和数组可以使用增强for)

for(Stirng s : coll){

}

注意: 1,增强for中的变量(s),不会改变集合中原本的数据

3).Lambda表达式遍历

image.png

List集合

image.png

image.png

LinkedList集合

LinkedList特有方法: image.png

Set集合

没有自己特殊的方法,直接使用父类Collection的方法

image.png

HashSet

底层原理:

image.png

TreeSet --------如果是自定义对象(例如User类之类的对象),需要自己写排序方法。

image.png

双列集合

特点分析:

image.png

image.png 注意:

1,TreeMap 添加 自定义对象 时,必须重写比较方法。 TreeMap中自定义对象比较时,如果以对象中的某个属性去比较,特别注意 他会根据该属性是否重复进行判断,如果该属性重复,但该对象的其他属性不重复,也会被删除。

2,采用第二种Comparator比较器比较时,一定要先写 Comparator比较器接口的匿名内部类对象,并返回一个变量名,通过该变量名去添加 对象,例如(maps.put(new Girl("张三", 175, 45, 23),"lisi");)

image.png Map集合常用方法:

image.png 注意:put() 一个作用是添加操作,另一个作用是覆盖,当后面添加的键值对前面已经有一个相同的键了,那么后来的会把前面的覆盖掉,并返回覆盖的值。

Map集合遍历方式:

1)通过键找值

image.png

2)通过键值对进行遍历

image.png

3)Lambda(forEach)遍历

image.png

Collections工具类

image.png