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的更多相关文章
- mapreduce中一个map多个输入路径
package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Java基础Map接口+Collections
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- 多用多学之Java中的Set,List,Map
很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ...
- Java版本:识别Json字符串并分隔成Map集合
前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...
- MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析
在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ...
- MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程
在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...
- MapReduce剖析笔记之五:Map与Reduce任务分配过程
在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...
随机推荐
- ubuntu 18 怎样对Windows进行远程桌面控制
ubuntu 18 怎样对Windows进行远程桌面控制: 1. 先安装一个redesktop 工具(sudo apt-get install redesktop) 2. 在通过 redesktop ...
- nyoj 100-1的个数 (因为只统计1的个数,连栈都不需要了)
100-1的个数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:33 提交数:42 难度:1 题目描述: 小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程 ...
- RabbitMQ学习笔记之五种模式及消息确认机制
本文详细介绍简单模式Simple.工作模式Work.发布订阅模式Publish/Subscribe.Topic.Routing. Maven依赖引用 <dependencies> < ...
- vim编辑中断后,重新编辑的警告删除
使用vim 编辑,遇到突然中断,比如ssh远程时断网了. 如果再次ssh连接,重新vim 打开之前在编辑的文件,会有类似如下的警告 这是因为vim会在被编辑的目录下新建一个名为.filename.sw ...
- MySQL基础知识面试与答案
1.Mysql 的存储引擎,myisam和innodb的区别. 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务 ...
- Python 深入浅出支持向量机(SVM)算法
相比于逻辑回归,在很多情况下,SVM算法能够对数据计算从而产生更好的精度.而传统的SVM只能适用于二分类操作,不过却可以通过核技巧(核函数),使得SVM可以应用于多分类的任务中. 本篇文章只是介绍SV ...
- 在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导
转载自:在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导 https://www.linuxidc.com/Linux/2016-07/133717.htm
- Stream系列(七)distinct方法使用
EmployeeTestCase.java package com.example.demo; import lombok.Data; import lombok.ToString; import l ...
- Spring Data Jpa的四种查询方式
一.调用接口的方式 1.基本介绍 通过调用接口里的方法查询,需要我们自定义的接口继承Spring Data Jpa规定的接口 public interface UserDao extends JpaR ...
- Xamarin.Forms 学习系列之底部tab
App中一般都会有一个底部tab,用于切换不同的功能,在Xamarin中应该制作底部tab了,需要把Android的TabbedPage做一次渲染,IOS的则不用,接下来说下详细步骤: 1.在共享项目 ...