Java 集合

存储对象可以考虑:数组、集合。但是使用数组存储数据存在一些弊端:一旦创建,其长度不可变;真实的数组存放的对象个数是不可知的。
Java集合可分为Map和Collection两种体系。

Collection接口继承树
这里写图片描述
Collection接口:
1.Set:元素无序、不可重复的集合(HashSet、LinkedHashSet、TreeSet)添加进Set中的元素所在的类,必须equals()和hashCode()方法,保证元素的不可重复
2.List:元素有序、可重复的集合(ArrayList、LinkedList、Vector)<删除remove(int index),修改set(int index,Object obj),获取get(int index),插入add(int index,Object obj)>
添加进List集合中的元素(或对象)所在的类一定要重写equals()方法
3.Map接口:具有映射关系“key-value对”的集合(HashMap、LinkedHashSet、TreeMap、HashTable<子类ProPerties>)
【集合API
1.size():返回集合中元素的个数
2.add(Object obj):向集合中添加一个元素
3.add(Collection coll):将形参coll中包含的所有元素添加到当前集合中
4.isEmpty():判断集合是否为空
5.clear():清空集合元素
6.contains(Object obj):判断集合中是否包含指定的obj元素,如果包含,返回true;反之返回false
7.containsAll(Collection coll):判断当前集合是否包含coll中所有的元素
8.retainAll(Collection coll):求当前集合与coll的共有的元素,返回给当前几个
9.remove(Object obj):删除集合中的obj元素,若删除成功,返回true,否则返回false
10.removeAll(Collection coll):从当前集合中删除包含在coll中的元素。
11.toArray():将集合转化为数组
12.iterator():返回一个Iterator接口实现类的对象】

List接口常用方法
这里写图片描述

List:ArrayList底层是数组(主要实现类),LinkedList底层是链表(频繁的插入和删除建议用LinkedList),Vector(古老的实现类,线程安全的)

遍历集合(三种方式)
这里写图片描述

Set:HashSet(主要实现类)、LinkedHashSet、TreeSet
Set的存储是无序的(元素在底层的存储的位置是无序的),不可重复的(当向Set中添加相同的元素时,后边的不会被添加进去)
Set中的元素使用哈希算法存储。当向Set中添加对象的时候,首先调用此对象所在的hashCode()方法,计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置,若此位置之前没有对象存储,则这个对象直接存储到此位置,若此位置已有对象存储,再通过equals()比较这两个对象是否相同,如果相同,后一个对象就不能再添加进来。要求:hashCode()方法要与equals()方法一致。
LinkedHashSet:使用链表维护了一个添加进集合的顺序,导致我们便利LinkedHashSet集合元素时,是按照添加进去的顺序遍历的。
TreeSet:1.向TreeSet中添加的元素必须是同一个类的
2.可以按照添加进集合中 的元素的指定的顺序遍历。像String,包装类等默认按照从小到大的顺序遍历
3.当向TreeSet中添加自定义类的对象时,有两种排序方法:自然排序和定制排序
4.自然排序:要求自定义类实现java.lang.Comparable接口并重写其compareTo(Object obj)的抽象方法,在此方法中,指明按照自定义类的哪个属性进行排序。
5.向TreeSet中添加元素时,首先按照compareTo()方法进行比较,一旦返回0,虽然仅是两个对象的此属性值相同,但程序会认为这两个对象是相同的,进而后一个对象就不能添加进来。
compareTo()与hashCode()以及equals()三者保持一致。

Map:保存具有映射关系的key-value。【HashMap(Map的主要实现类)    LinkedHashMap   
TreeMap(按照添加Map中的元素的key的指定属性进行排序,要求:key必须是同一个类的对象)   HashTable】

Map中:
1.key用Set存放,不允许重复,即同一个Map对象对应的类,须重写hashCode()和equals()方法。value是Collection存放的,可重复。一个key-value对,是一个Entry,所有的Entry是用Set存放的,也是不可重复的。
2.向HashMap添加元素时,会调用key所在类的equals()方法,判断两个key是否相同,如果相同,只能添加进后添加的那个元素。(添加用.put(key,value))
这里写图片描述

这里写图片描述

如何遍历Map?
Set keySet()
Collection values()
Set entrySet()
这里写图片描述

这里写图片描述

这里写图片描述

Collections:操作几个的工具类
这里写图片描述

面试题:Collection与Collections的区别。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值