016_List/Set/Map
2024-10-06 12:39:04
先写一下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() 获取该键值对的键
最新文章
- 控制台查看原生sql
- sql语句把字段中的某个字符去掉
- java 平面上最近两个点之间的距离
- Atitit. 获取cpu占有率的 java c# .net php node.js的实现
- Android 利用SharedPreferences保存与删除 用户登录数据
- ORACLE 日期比较
- hdu1301 Jungle Roads (Prim)
- Win8开发疑问与解答
- C-C Radar Installation 解题报告
- Linux下转换文件从GBK到UTF-8
- Parallels Desktop 14.1.3中文版win系统安装教程
- 解决tab标签页,相同id时切换失灵的问题
- Mysql存储过程入门介绍
- Slony-I同步复制部署
- PHP 获取上月,本月,近15天,近30天日期
- Python 函数(一)
- Linux下实现多播(组播)
- oracle 归档空间满的解决办法
- css用法(持续更新ing)
- Angular5学习笔记 - 配置NG-ZORRO(八)