Java中的集合

集合:

  1. 集合里面存储对象的引用,集合本身是一个容器,也是一个对象,常见的集合: 数组(ArrayList)、双链表(LinkedList)、二叉树(TreeMap)、哈希表(HashMap)。
  2. 集合分两大类:第一:以单个方式存储元素:超级父接口是Collection(有迭代器),第二:以键对的形式存储元素:超级父类接口是Map。

Collection:

Map:

(上面两图转载动力节点Java零基础)

Collection:有iterator()方法返回Iterator对象迭代遍历集合(List和Set)。

当集合的结构发生改变,集合的迭代器对象必须重新获取。如果使用迭代器对象的 remove方法,则不需要重新获取。

注意:contains()和remove()底层调用了equals()方法。

List:存储的元素是有序可重复的,存入时和取出的顺序一样,有下标(index),元素可 以重复。

        1、ArrayList:

实现的接口Serializable(序列化)、Cloneable(克隆)、底层是一个数组的存储结构,无参构造方法时给一个空的数组,初始容量是在添加第一个元素时扩大容量至10,当容量超出时,扩容为原来的1.5倍。线程不安全,可以通过调用工具类Collections.synchronizedList(List list)来保证线程安全。

        2、LinkedList:底层是一个双链表,默认初始节点的frist和last为null。

        3、Vector:底层也是一个数组,无参构造函数调用自身有参构造方法,传入一个容量为10的参数。Vector有synchronized关键字修饰,线程安全,但是因为解决线程安全问题,导致效率低。

Set:存储的元素是无需不可重复的,元素存入和取出的顺序不一样,元素不能重复

        1、HashSet:无参构造方法创建了一个HashMap对象。

        2、SorteSet:自动按照元素的大小排序。

Map:以键值对的方式存储元素,无序不重复的,存入没有顺序,key部分是无序不可重复。

        1、HashMap:在JDK1.7之前是数组+单链表,JDK1.8之后引入了红黑树,在链表的长度达到8时,链表转化为红黑树,当红黑树的长度为6时,转换回链表,不设置在8可能是怕频繁转换会影响性能。HashMap初始容量为16,因子为0.75,扩容会扩容为原来的2倍,key和value可以存储null。

        2、Hashtable:初始容量为11,因子为0.75,扩容会扩容为原来的2倍+1,线程是安全的,但是效率低,不能存储null。

                Propreties:key和value部分只支持String类型,线程是安全的,常用方法 setProprety(String key,String value)、getProprety(String key)

        3、 TreeMap:底层是一个二叉树,采用中序遍历,有Comparable和Comparator两种比较接口,前者适合固定一个比较公式,后者适合灵活的多种比较方式。

集合的遍历:

List:

  1. 使用集合的迭代器Iterator对象,调用方法hasnext()、next()遍历。
  2. For(:){},进行遍历。
  3. 使用for循环、List中的get(index)遍历。ArrayList使用此方式遍历性能高

Set:

  1. 使用集合的迭代器Iterator对象,调用方法hasnext()、next()遍历。
  2. For(:){},进行遍历。

Map:

  1. 使用map中的entrySet()转换为Set<Map.Entry>,然后for遍历。

      2.将Map中的key部分转换为Set,通过遍历Set中key,然后传入到Map.get()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值