Java基础集合下

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接口

集合嵌套

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值