016_List/Set/Map
Posted a276665092
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了016_List/Set/Map相关的知识,希望对你有一定的参考价值。
先写一下3这种遍历方法
for循环
List<Teacher> list = new ArrayList<>(); list.add(new Teacher("张三",21)); list.add(new Teacher("李四",28)); list.add(new Teacher("王五",18)); // for 循环 for(int i = 0;i<list.size();i++){ System.out.println(list.get(i)); } // 增强for :foreach+补全 for (Object object : list) { System.out.println(object); } // 迭代器ITerator, 这是集合特有的 Iterator it = list.iterator(); while(it.hasNext()){ Object next = it.next(); Teacher tea = (Teacher)next; if(tea.getAge()<20){ it.remove(); System.out.println(tea);// 不合格学生 } }
List 接口
- ArrayList 数组结构 这是list接口的主要实现类
- Vector 底层也是数组,线程安全,但效率较慢
- LinkedList 链表结构 查询效率慢,增删块
Set
特点:无序,无下标,不重复
set没有特有的方法,都是继承于父接口
底层是通过哈希计算得出内存的地址,如果地址不同则直接赋值,如果地址相同就在看内容。
相同对象,哈希值一定相同,不同对象哈希值可能相同
①HashSet 作为主要实现类
- 判断hashCode(是否相同,不同直接存储,当做不重复处理)
- 相同时,他才会进行equals比较内容,当内容相同了,不添加
②TreeSet 实现 自然排序
- 要求:性价到该集合里的类必须支持排序
- 必须要实现Comparable接口否则汇报类型转换异常
- 实现Comparable接口 要重写CompareTO()方法,确定比较的依据
定制排序
- 1.创建一个比较器
- comparetor 抽象方法
- compare
- 在创建 TreeSet时
- 通过有参构造把比较器对象穿进去
自然排序和定海排序比较:
定制排序的优先级高,而且和类结耦!!!
③LinkedHashSet
基于链表的结构 多维护一层添加顺序
Map
遍历:
所有的key
keySet() ==> Set 集合
所有的value
values() ==> Collection集合
所有的键值对
entrySet ==> Set 集合
在得到键值对后 键值对的类型 Map.Entry 类型
getKey() 获取该键值对的键
以上是关于016_List/Set/Map的主要内容,如果未能解决你的问题,请参考以下文章
java面试_集合框架001_ListSetMap三者的区别_说出ArrayListLinkListVector的区别