这是本人第一次在博客上发表文章
如果有其它的缺点或者不足
请看过这篇文章的朋友多多指教.
根据下图进行对collection接口和map接口下的所有集合进行图解

一. collection接口是集合框架的顶级接口(set与list的父接口,不是map集合的父接口)
1.list集合图解
- list集合是有序的,可以重复,只能添加引用数据类型(八大基本数据类型)
- list集合有三种遍历方式
- 下标遍历(remove对象的时候会进行隔行逻辑操作)
- foreach遍历(remove对象会有当前改变异常 不能进行移除)
- 迭代器遍历(正常操作)
- list与数组最大的区别在于数组有长度的限制而list并没有(但是其实list是有长度的)每次 初始容量10,负载因子0.5也就是说会以1.5的增加量在list集合里面扩容
-
//1.下标遍历 List list=new ArrayList<>(); list.add(23); list.add(25); list.add(26); list.add(27); list.add(24); list.add(22); for (int i = 0; i < list.size(); i++) { Object obj=list.get(i); System.out.println(obj); } //2.foreach遍历 for (Object obj : list) { System.out.println(obj); } //3.迭代器遍历 ListIterator it=list.listIterator(); while(it.hasNext()) { Object obj=it.next(); System.out.println(obj); }
1.vector与ArrayList的区别
-
ArrayList 线程安全低 不同步(单个线程访问集合) 速度快
-
vector 线程安全高 同步(多个线程访问集合) 速度慢
2.set集合图解
set 集合在1.8以上是有序的
1.7以下(针对除开integer string的引用数据类型是无序的)
结果 表明 是散列排序
- set集合无序、对象不能重复(eqauls) (eqauls从Object继承,默认比较的内存地址)
- hashset的排序是散列排序(随机排序)关于hashset有序的问题
- treeset被称为平衡树/红黑树/二叉树(排序:字符串比的不是数值,按首位的ASCII码进行,如果相同,则对比下一位,始终一致的话,则对比长度;
- hashset与hashtable的区别
1.hashset用来做高性能集运算的,例如对两个集合求交集、并集、差集等。集合中包含一组不重复出现且无特性顺序的元素,HashSet拒绝接受重复的对象。
2. hashtable用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。
二.map接口图解
1.无序、以键值对的形式添加元素,键不能重复,值可以重复,如果键相同,值会覆盖
它没有继承Collection接口
2 遍历
2.1 先取出保存所有键的Set,再遍历Set即可
2.2 先取出保存所有Entry的Set,再遍历此Set即可(快速遍历Map)
三.比较器接口(Comparator)与自然排序接口(Comparable)
1. java.lang.Comparable:自然排序接口
2. java.util.Comparator:比较器接口
使用比较器接口实现类对象属性的排序比如:
1.实现比较器接口
实现方法(完成排序)
2.实现自然排序接口
重写方法(实现排序)
有个关于map集合的题
现有一个字符串,String=“asdasdsafsa”,求单个字符出现多少次(map集合作答)
答案下次公布 敬请期待
-------笑而不语的猫