java集合类

List,Map,Set

总结构图:
在这里插入图片描述

Java是面向对象的语言,我们在编程的时候自然需要存储对象的容器,数组可以满足这个需求,但是数组初始化时长度是固定的,但是我们往往需要一个长度可变化的容器,因此,集合出现了。
常见的集合类有List,Map,Set,其中List和Set都实现了Collection接口。

关于Collection

Collection接口被List接口和Set接口继承;

Collection

Collection接口是单列集合的最顶层接口,定义了一些通用的方法。
add(E e)添加元素; clear()清空元素; remove(E e)移除元素; size()元素数量;toArray()集合转数组; contains(E e)判断元素是否存在; isEmpty()判断集合是否为空;

LIST
  • List接口有三个实现类,ArrayList,LinkedList,Vector;有序可重复
    特点:有索引,精准操作元素;
    元素有序,存储及取出时顺序一致;元素可重复,通过.equals()比较是否重复。它利用索引(index),定义了一些特殊方法:

get(int index,E e) 获取指定位置的元素;remove(int index)移除指定位置的元素; add(int index,E e) 将元素添加到指定位置;set(int index,E e) 用元素替换指定位置的元素;

ArrayList接口

数组结构是有序的元素序列,在内存中开辟一段连续的空间,在空间中存放元素,每个空间都有编号,通过编号可以快速找到相应元素,因此查询快;数组初始化时长度是固定的,要想增删元素,必须创建一个新数组,把源数组的元素复制进来,随后源数组销毁,耗时长,因此增删慢。

LinkedList

链表分为单向和双向,就是一条链子和两条链子的区别;多出的那条链子记录了元素的顺序,因此单向链表结构无序,双向链表结构有序;链表结构没有索引,因此查询慢;链表的增删只需在原有的基础上连上链子或切断链子,因此增删快。

特有方法:getFirst() 返回开头元素; getLast() 返回结尾元素;
pop() 从所在堆栈中获取一个元素; push(E e) 将元素推入所在堆栈;addFirst(E e) 添加元素到开头,头插; addLast(E e) 添加元素到结尾,尾插;

Vector

基本不用,但重要的是它是线程安全的,因此效率低下。

Set
  • Set接口被HashSet类(hashset继承hashmap)实现,被SortedSet接口继承,同时TreeSet类实现SortedSet接口,LinkedHashSet类继承HashSet类;无序不可重复
    没有索引,因此不能使用普通For循环遍历;
HashSet

数据结构:JDK1.8之前:哈希表(数组+单向链表);JDK1.8之后:哈希表(数组+单向链表+红黑树),当链表长度超过阈值(8)时,链表将转换为红黑树。
LinkedHashSet实现类,作为HashSet的子类,只是比它多了一条链表,这条链表用来记录元素顺序,因此LinkedHashSet其中的元素有序。
TreeSet TreeSet实现了继承于Set接口的SortedSet接口 ,它支持两种排序方法,自然排序和定制排序,自然排序的意思就是放入元素“a”,“b”,a会自然地排在b前面,其中还有几个特有方法。
first() 返回第一个元素; last() 返回最后一个元素;comparator() 返回排序比较器;

Map

特点:元素包含两个值(key,value)即键值对,key不允许重复,value可以重复, key与value是一一对应的。元素无序

Map接口是双列集合的最顶层接口,定义了一些通用的方法。
put(key , value) 添加元素; remove(key) 删除key对应元素;
containsKey(key) 判断是否存在key对应元素;get(key) 获取key对应元素;
KeySet() 获取所有的key,存到Set集合中;entrySet() 获取所有的元素,存到Set集合中;

  • Map接口有两个实现类,HashMap,HashTable。
  • Map接口被SortedMap接口继承,同时TreeMap类实现了SortedMap接口;
HashMap

特点:查询快,元素无序,key不允许重复但可以为null,value可以重复。
底层分析:和HashSet底层相类似

LinkedHashMap

特点:查询快,元素有序,key不允许重复但可以为null,value可以重复。
底层分析:和LinkedHashSet底层相类似

HashTable

线程安全
Hashtable的子类Properties现在依然活跃,Properties集合是一个唯一和IO流结合的集合。

TreeMap

数据结构:红黑树
特点:查询快,元素有序,key不允许重复并且不可以为null,value可以重复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值