list集合特点
有序:存储数据顺序和从头到尾取出数据的顺序一样就是有序,反之无序
可重复:可添加多个一模一样的元素
有索引:可通过索引操作集合存储的数据
set集合特点
collection集合提供的方法
将集合转化成数组toArray()
toString是讲数组转换成字符串;官方的方法只能转换成Object类型的集合,要变成(new String[])才能转成字符串数组
将一个集合的数据添加到另一个集合addall()
拷贝c2的进入c1,c2的元素不变
迭代器(遍历集合)
用一个迭代器对象便利
It.next()的作用取出迭代器当前指向的元素,并且指向下一个元素;while()中,it.hasNext()如果当前指向的位置有元素,则返回true,进入循环体;只能取一次next(),不能取多次
增强for循环
采用增强for循环,变量名随意任取;括号最右边填集合名
lambda表达式
list集合(list是接口类型不能直接创建对象,要用他的实现类创建对象)
若引用类型是Collection,直接sout打印集合会打印元素地址;若引用类型是list,打印的就是字符串与索引有关的方法
list遍历
linklist集合(链表,队列,栈)首尾操作方便
链表
队列
用addlast来入队,removefirst来出队(出队列中最后一个人)
栈
用addfirst来进行进栈(每次进栈都是加到首个位置),removefirst来进行首元素出栈
用push和pop代替也可以
set集合
linkedhashset有序,treeset能将元素按大小默认按升序排序
HashSet
LinkedHashSet(有序)
TreeSet(按大小排序)
哈希值
当对象内容相同时,也能保证不重复。方法:重写hashcode和equals方法
没重写前两个对象内容相同,哈希值不同,不能满足无序
使用生成重写就可满足不重复
treeset特点
treeset只能对integer,double,字符串(首字母编号)类型的对象进行升序排序,对自己定义类型的对象无法排序
自定义排序
1.重写接口中compareto方法,使用compareto方法来指定比较规则
2.
大小相等不存
选择集合
集合并发修改异常
采用迭代器遍历删除时,要用迭代器自己的remove方法删除元素,不能用集合自己去删除
可变参数
可变参数本质就是一个数组
注意事项
collections工具类
addall()方法,为集合添加元素
为names集合添加…….
shuffle()方法,打乱集合中的元素
sort()方法对集合进行升序排序,只能对集合类型为integer和Double排序
对自定义类类型的集合排序
1.要将自定义的类实现Comparable接口,并加入比较的对象(自己类)的<>泛型。然后再在类中重写compareto方法。this代表当前对象,o代表this比较的对象,若this的age大于o的age则返回正整数,相等返回0,反之返回负整数。main方法中用sort()方法排序时sort会自动调用compareto()方法根据重写的规则进行排序
Map集合(双列集合)
键不可以重复,值可以重复
map是一个泛型接口,k是一个类型,v是一个类型,k和v都要是类的类型
treemap按照键的大小升序排序
hashmap
map集合自己重写了tostring方法
后面的数据会覆盖前面的数据
linkedhashmap
Treemap
map中的方法,重点get()根据键获取值
remove()方法根据键删除整个元素,并返回键对应的值
查询是否包含某个键
判断是否有中这个值
keyset()方法获取所有键,并将这些键放到map集合中返回,由于map中所有键都无序,不重复所以放到set中是合理的
calues()获取所有值,用collection的集合返回
putall()将其它map集合倒入自己的集合中,有键重复的话会覆盖原来的
总结
map的遍历方式
1.键找值
先获取键,这些键用set集合装着,再遍历集合,通过键再找值
2.
2.键值对
map调用entryset方法,会将map中的键和值封装成一个entry对象
封装之后的类型是map的Entry类型(map的实体类型)
然后封装完会将这些键值对对象放到set集合中,集合中的类型是键值对类型
Map.entry<>类型是键值对类型
用foreach循环遍历,类型是键值对类型,利用变量entry来遍历entries集合中的每个元素,再利用map.entry提供的方getkey和getvalue方法去拿出键和值的数据
3.lambda(最简单)
用foreach方法创建(k,v)->就完成了
案例(一一对应时用map)
Hashmap
当hashmap<>中键是自定义类的对象时,新建的两个对象一样的且值也一样时不会覆盖原来map中的元素
要想不重复就直接在实体类中重写equal和hashcode方法
Linkedhashmap
Treemap
让类实现comparable接口
集合嵌套