一、集合
1、List
(1)ArrayList
<1>可以同时多线程访问,效率高但是容易出现并发错误(Vector只能单线程,效率低但是不会出现并发)
<2>基于数组实现,遍历的效率高,添加删除元素效率略低(LinkedList基于双向循环列表实现,对于增删改元素的效率较高,但是遍历时需要永远从下表0开始)
<3>有序的添加元素,元素不唯一,比如装入"Jim"的名字,可以有重名的人
(2)LinkedList
<1>LinkedList底层基于双向循环链表实现的
<2>劣势:随机访问 遍历查找永远需要从下标0查找
2、Set
(1)HashSet
无序、唯一。该集合是基于哈希表实现的,我们在往hashset中添加对象的时候,需要按顺序比较 hashcode->地址->equals。因此我们往往需要覆盖我们所创建对象的hashcode、equals方法此事在笔记1中亦有记载
(2)TreeSet
3、Map
(1)Map
Map——键值对,主键唯一、值不唯一、二者一一对应。
(2)HashMap
HashMap底层基于哈希表实现的 默认分16个小组 每对元素[key=value]应该装进哪一个小组 根据主键的哈希码值决定 当来到某个小组之后如果发现组内有元素 为了保证主键的唯一性 需要拿着新来元素的主键和老元素的主键做hashCode()、 == 、equals()比较。
(3)TreeMap
TreeMap底层基于二叉树实现的 每对元素[key=value]应该装在左子树/子树 根据主键决定 底层在添加元素的时候 会拿着新来的主键和老元素的主键做compareTo()/compare()比较
4、Collections
针对List集合提供的方法:
Collections.sort(list集合):按照自然排序 需要泛型必须实现
Collections.sort(list集合,比较器)按照定制排序
将参数不安全的ArrayList变成线程安全的List集合
List<> list = Collections.synchronizedList(ArrayList对象);
针对所有单值集合[List、Set、SortedSet]提供的方法:
Collections.addAll(单值集合,元素,元素...);一次添加多个元素
Collections.max(单值集合):自然排序得到集合里面的最后一个元素[最大值 -》 升序]
Map【映射】集合:每次往集合里面一对元素【key=value】
要求主键唯一 但是值可以重复
所有Map集合通用的方法
Collections.max(单值集合,比较器)定制排序得到集合里面的最后一个元素[最大值-》升序]
Collections.min(单值集合):自然排序得到集合里面的第一个元素[最小值-》升序]
Collections.min(单值集合,比较器)定制排序得到集合里面的第一个元素[最小值-》升序]
Collections.frequency(单值集合,查找元素)查找集合里面该元素出现的次数 底层尊equals()
5、方法总结
(1)所有单值集合共有的操作方法
add(元素)
remove(元素)
contains(元素)
size()
isEmpty()
iterator()
addAll(集合)
removeAll(集合)
retainAll(集合)
clear()
(2)ArrayList
get(下标)
set(下标,元素)
remove(下标)
indexOf(元素)
lastIndexOf(元素)
(3)HashSet
无特有方法
(4)TreeSet
first() //只拿数值
pollFirst() //将元素取出来(里面就没有了)
last()
pollLast()
(5)Map
<1>map方法
map.put("刘德华",500)添加元素
map1.putAll(map2)将map2集合里面的数据装进map1集合里面
map.size()得到集合大小
map.get("张学良")通过主键获得值对象
map.containsKey("刘德华")判断存在某个主键对像
map.containsValue(600)判断存在某个值对象
map.remove("张学友");通过主键删除
map.isEmpty()/判断集合是否为空
<2>遍历方法
Set<主键> set = map.keySet();//遍历后map.get(x)可以得到对象的值
Collection<值> cs = map.values();//只遍历值
Set<Map.Entry<主键,值>> set = map.entrySet();//x.getKey()
//x.getValue()得到值 x.setValue()修改值
<3>HashMap
containsKey(主键)底层尊重hashCode() == equals()
<4>TreeMap
containsKey(主键)底层尊重compareTo()/compare()
443

被折叠的 条评论
为什么被折叠?



