谈谈你对集合的理解?

谈谈你对集合的理解?

Java中的集合分为Conllection(value),Map(key–value)两种:

  • Conllection存储值有分为List 和Set:

    • List是有序的,可以重复的。

    • Set是无序的,不可以重复的。根据equals和hashcode判断,也就是如果一个对象要存储在Set中,必须重写equals和hashCode方法

  • Map存储为key-value

Java集合是java提供的一个工具包,全部继承自java.util.*。主要包括两大接口Collection接口和Map接口以及相关的工具类(Iterator迭代器接口、Enumeration枚举类、Arrays和Colletions)。

Java集合的详细框架图:
在这里插入图片描述

在这里插入图片描述

1、Collection是一个接口,包含List列表和Set集合。其中List是有序的队列,元素值可以重复,索引从0开始,实现类有LinkedList,ArrayList,Vector;而Set是一个不允许有重复元素的集合,Set的实现类有HashSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

2、Map是一个映射接口,通过key-value键值对实现。实现类有HashMap,TreeMap,WeakHashMap,Hashtable。

3、Iterator是遍历集合的工具,Enumeration也是遍历集合,但它的的功能要比Iterator少,只能在Hashtable, Vector, Stack中使用。

4、Arrays和`Collections是操作数组、集合的两个工具类。

下面是具体一点的比较:

  1. ArrayList, LinkedList, Vector, Stack是List的4个实现类,比较他们的异同。 ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。

  • LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率高。
  • Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。
  • Stack 是栈,它继承于Vector。它的特性是:先进后出(FILO, First In Last Out)。
  1. HashMap、HashTable、TreeMap的区别
  • HashMap是键值对的方式存储的,但不能保证次序,单线程;
  • HashTable与HashMap存储方式相同,但是是线程安全的;
  • TreeMap是有序的键值对,基于红黑树排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值