集合相关内容的总结

一、总结

最近将JAVA的集合学了一遍,了解了集合的作用以及应用场景。en、大概就是这些东西,不是很全的哈。
集合相关内容的总结

二、概述

接下来详细的谈一下关于集合的点点滴滴吧。
1、Collection
Collection是单列集合,顾名思义就是只有一个参数,那它的子集合有List和Set。
①List
List是有序可重复的,这里的有序是指存储顺序和取出顺序一致。
它的儿子有:ArrayList、Vector、LinkedList
那关于ArrayList、Vector、LinkedList又有一个面试题就是关于它们三个的特点和区别:
ArrayList:底层数据结构是数组,查询快、增删慢
线程不安全、效率高
Vector:底层数据结构是数组,查询快、增删慢
线程安全、效率低
LinkedList:底层数据结构是链表,查询慢、增删快
线程不安全、效率高
②Set
Set集合无序而且数据唯一(存储顺序和取出顺序不一致)
它的儿子有:HashSet、TreeSet
A——HashSet:
底层数据结构是哈希表,那哈希表的底层又依赖于HashCode()和equals()方法,先利用HashCode方法来判断值是否相同,相同的话在利用equals方法来继续判断,所以HashSet集合对象有时候需要重写这两个方法来实现元素唯一,不过一般这两个方法可以自动生成。
那HashSet又有一个儿子叫:LinkedHashSet
底层数据结构由链表和哈希表组成。
由链表保证元素有序
由哈希表保证元素唯一
B——TreeSet:
底层数据局结构是红黑数(红黑数是一种自平衡的二叉树),可以进行排序。
自然排序(元素具备比较性)(无参构造实现)
让元素实现comparable接口
比较器排序(集合具备比较性)(有参构造实现)
让集合接受一个comparator的实现类对象
2、Map(双列集合)
Map的数据结构只针对键有效,与值无关
存储的是键值对形式的元素,键唯一、值可重复
A——HashMap(线程不安全、效率高)
底层数据结构是哈希表,那哈希表的底层又依赖于HashCode()和equals()方法,先利用HashCode方法来判断值是否相同,相同的话在利用equals方法来继续判断,所以HashSet集合对象有时候需要重写这两个方法来实现元素唯一,不过一般这两个方法可以自动生成。
LinkedHashMap
底层数据结构由链表和哈希表组成。
由链表保证元素有序
由哈希表保证元素唯一
B——HashTable(线程安全、效率低)
底层数据结构是哈希表,那哈希表的底层又依赖于HashCode()和equals()方法,先利用HashCode方法来判断值是否相同,相同的话在利用equals方法来继续判断,所以HashSet集合对象有时候需要重写这两个方法来实现元素唯一,不过一般这两个方法可以自动生成。
C——TreeMap
底层数据局结构是红黑数(红黑数是一种自平衡的二叉树),可以进行排序。
自然排序(元素具备比较性)(无参构造实现)
让元素实现comparable接口
比较器排序(集合具备比较性)(有参构造实现)
让集合接受一个comparator的实现类对象

三、如何使用?

集合相关内容的总结

四、常见方法和遍历方式

A——Collection
add();//添加元素
remove();//删除元素
contains();//判断是否含有指定元素
iterator();//迭代器遍历
size();//获取集合长度
遍历:
增强for
迭代器
a——List
get();//获取指定位置元素
遍历:
普通for
B——Map
put();//添加元素,返回添加前的元素
remove();//根据键删除键值对元素并把值返回
containsKey();//判断是否包含指定键
containValue();//判断是否包含指定值
keySet();//获取所有键的集合
get();//根据键获取值
value();//获取集合中所有值的集合
entrySet();//获取所有键值对对象
size();//返回集合中的键值对的对数
遍历:
根据键找值:
keySet()方法获取键、增强for加上get()方法用键获取值
根据键值对对象分别找键和值:
entrySet()方法获取键值对对象,然后用键值对对象调用get()和value()方法获取键和值。