java - day011 - 集合, ArrayList HashMap,HashSet, Iterator 接口, for-each 循环格式
集合 ArrayList
丑数: 能被3,5,7整除多次,
ArrayList
list 接口
| - ArrayList
| - LinkedList
ArrayList 内部封装一个数组
用数组存放数据
默认初始容量是 10,
放满后会新建1.5倍的长度的新数组
之前数据复制放入新数组,之前数组释放
数组访问效率高,任意位置都是
但是增删数据效率可能低
创建对象
new ArrayList();
初始容量10
new ArrayList(1000);
初始容量 指定 1000
方法
与LinkedList 相同
没有两端操作数据的方法
iterator();方法
hasNext();
next();
remove();
迭代器遍历期间,不能使用 list 增删数据,
迭代期间删除必须使用 iterator.remove();
HashMap 哈希表 / 散列表
存放键值对数据
键不重复,数据无序
作用: 用键快速查找速度
方法:
put(key,value); 放入键值对数据,重复键覆盖原值
get(key);取键对应的值,键不存在 返回 null
size();键值对的数量
remove(key);移除键值对,返回被移除的值
keySet(); 把HashMap 里面所有键取出放入HashSet里面
哈希算法
用数组存放数据,初始长度16
- 存放数据的过程: 先获得键的哈希值, key.hashCode();
- 用哈希值和数组长度来计算一个下标值 index
- 将键和值进行封装成 Entry 对象
- Entry 对象,放入 index 位置
空位置,直接放入
有数据,依次用 equals() 比较键是否相等
找到相等的,覆盖值
没有相等,链表连在一起
负载率,加载因子到 0.75(既数据数量到数组容量的0.75)
新建容量翻倍的新数组
所有数据,重新哈希,放入新数组
jdk 1.8以后
链表长度到 8, 转成红黑树(二叉树结构,小的往左放,大的往右放)(比大小比键的哈希值)
红黑树长度减少到 6, 转成链表
- HasCode()
- 从object 继承的方法
- 默认实现是使用内存地址值作为哈希值
- 可以在子类中重写这个方法, 用对象的属性数据计算哈希值
- HashSet
- 用hashmap 放数据
- 数据不重复且无需
- 方法:
- add(数据)
- remove(数据)
- size()
- iterator() 迭代器
- Iterator 接口
- 使用集合的 iterator() 方法创建的迭代器对象,都是接口的子类型对象
- 迭代器使用期间,不能直接使用集合来增删数据
- 方法:
- hashNext()
- next()
- remove()
- Collections 工具类
- addAll(集合,值1,值2,值3,值4...); 集合多个添加数据
- sort(集合);排序 可以自己设置比较器
- binarySerarch(集合,目标值); 有序集合二分法查找,可以自己设置比较器
- swap(集合,a,b);交换a,b 位置
- for-erch 循环
- 是对数组遍历访问,集合迭代遍历访问的语法简化
- for-each简化语
for(String s :a){
// 处理 s
}- 集合的迭代遍历
for(Iterator<Intger>it=list.iterator;it.hasNext();){
Integer s = it.next();
}
- for-each简化语法
for(String s : list){ } - foreach 语法, 对集合有要求
- 要求集合必须实现 Iterable 接口
- 必须是 Iterable 接口的子类,才能用foreach
- for-each简化语法
java - day011 - 集合, ArrayList HashMap,HashSet, Iterator 接口, for-each 循环格式的更多相关文章
- java 数据结构(八):Iterator接口与foreach循环
1.遍历Collection的两种方式:① 使用迭代器Iterator ② foreach循环(或增强for循环)2.java.utils包下定义的迭代器接口:Iterator2.1说明:Iterat ...
- java集合(2)-Collection与Iterator接口
1 package com.j1803.collectionOfIterator; 2 import java.util.ArrayList; 3 import java.util.Collectio ...
- java集合 之 Collection和Iterator接口
Collection是List,Queue和Set接口的父接口,该接口里定义的方法即可用于操作Set集合,也可以用于List和Queue集合.Collection接口里定义了如下操作元素的方法. bo ...
- 浅谈Java语言中ArrayList和HashSet的区别
Java语言中ArrayList和HashSet的区别 2019-04-10 13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...
- Java中如何克隆集合——ArrayList和HashSet深拷贝
编程人员经常误用各个集合类提供的拷贝构造函数作为克隆List,Set,ArrayList,HashSet或者其他集合实现的方法.需要记住的是,Java集合的拷贝构造函数只提供浅拷贝而不是深拷贝,这意味 ...
- Java集合【2】--iterator接口详解
目录 一.iterator接口介绍 二.为什么需要iterator接口 三.iterator接口相关接口 3.1 ListIterator 3.2 SpitIterator 3.2.1 SpitIte ...
- Java容器深入浅出之Collection与Iterator接口
Java中用于保存对象的容器,除了数组,就是Collection和Map接口下的容器实现类了,包括用于迭代容器中对象的Iterator接口,构成了Java数据结构主体的集合体系.其中包括: 1. Co ...
- 【Java必修课】ArrayList与HashSet的contains方法性能比较(JMH性能测试)
1 简介 在日常开发中,ArrayList和HashSet都是Java中很常用的集合类. ArrayList是List接口最常用的实现类: HashSet则是保存唯一元素Set的实现. 本文主要对两者 ...
- JAVA基础——集合——ArrayList
ArrayList集合 ArrayList的一些方法(JDK1.8): 将指定的元素附加到列表的末尾,true:添加成功,false:添加失败: public boolean add(E e) ...
随机推荐
- 宣化上人:大佛顶首楞严经四种清净明诲浅释(10-11) -------------------------------------------------------------------------------- (转自学佛网:http://www.xuefo.net/nr/article23/230920.html)
大佛顶首楞严经四种清净明诲浅释(10) 唐天竺·沙门般剌密帝译 宣化上人主讲 一九八三年四月十七日晚讲于万佛圣城 是故阿难.若不断偷修禅定者.譬如有人.水灌漏卮.欲求其满.纵经尘劫.终无平复. 是故阿 ...
- 海康威视实时预览回调PS流用EasyRTMP向RTMP服务器推流中视频数据处理的代码
在上一篇方案<EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)>我们介绍了将海康安防摄像机进行互联网直播的整体方案流程,其中有一个 ...
- [转载] HashMap的工作原理-hashcode和equals的区别
目录 前言 为什么需要使用Hashcode,可以从Java集合的常用需求来描述: 更深入的介绍 先来些简单的问题 HashMap的0.75负载因子 总结 我在网上看到的这篇文章,介绍的很不错,但是我看 ...
- linq list select用法注意事项
下面是我自己做的一个例子 List<CR_CustomerOrder> OrdList = new List<CR_CustomerOrder>(); var b = OrdL ...
- docker中的fastdfs
准备环节)(本文遗漏当初出现的一个问题由于是docker装的fastdfs所以tracker storage client,nginx,nginx module都在同一个容器中只需要修改配置 特别注意 ...
- Bayesian machine learning
from: http://www.metacademy.org/roadmaps/rgrosse/bayesian_machine_learning Created by: Roger Grosse( ...
- Duration和Period的区别--通俗易懂
在jdk1.8以后,对表示日期时间的类型进行了重新分类,这里出现了2个新的类,Duraction 和Period Duraction表示:时间的区间,用来度量秒和纳秒之间的时间值 Period表示:一 ...
- Win + Manjaro 双系统、双硬盘安装方法 正确引导系统方法 黑屏解决方法(不瞎写,百分百有用)
1. 前言 本教程只涉及 Win + Manjaro 双系统.双硬盘安装过程中的核心要点,不涉及具体步骤,不注意这些要点,安装之后是进不去 Manjaro 系统的. 详细的安装步骤网上已经有很多了,这 ...
- 长乐培训Day2
T1 足球联赛 题目 [题目描述] 巴蜀中学新一季的足球联赛开幕了.足球联赛有n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得3分,输一场不得分,平局两只队伍各得一分. 英勇无 ...
- WUSTOJ 1315: 杜学霸和谭女神(Java)
题目链接: