IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> java集合框架 -> 正文阅读

[数据结构与算法]java集合框架

Collection父接口

boolean add(Object obj) //添加一个对象
boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中
void clear() //清空此集合中的所有内容
boolean contains(Object o) //检查此集合中是否包含o对象
boolean equals(Object o) //比较此集合是否与指定对象相等
boolean isEmpty() //判断此集合是否为空
boolean remove(Object o) //在此集合中移除o对象
int size() //返回此集合中的元素个数
Object[] toArray() //将此集合转换成数组

使用迭代器遍历:

Iterator it = collection.iterator();
while(it.hasNext()) {
	Object obj = it.next(); //迭代过程中不能使用collection.remove()方法,可用it.remove()方法
}

List子接口(有序、有下标、可重复)

void add(int index, Object o) //在index位置插入对象o
boolean addAll(int index, Collection c) //将一个集合中的元素添加到此集合中的index位置
Object get(int index) //返回集合中指定位置的元素
List subList(int fromIndex, int toIndex) //返回fromIndex和toIndex之间的集合元素

ListIterator迭代器可用向前或向后遍历,添加、删除、修改元素

list->数组:Integer[] arr = list.toArray(new Integer[0]);
数组->list:List< Integer > list2 = Arrays.asList(arr); //受限集合,不能添加和删除
Integer[] arr2 = {100,200,333};
List< Integer > list2 = Arrays.asList(arr2);

ArrayList(数组实现,查询快,增删慢,线程不安全)

DEFAULT_CAPACITY=10,默认容量
	注意:如果没有向集合中添加任何元素时,容量为0
elementData ,存放元素的数组
size ,实际元素的个数
扩容为原来的1.5倍

Vector(数组实现,查询快,增删慢,线程不安全)

LinkedList(链表实现,增删快,查询慢)

Set集合(无序、没有下标、不能重复)

HashSet

基于HashCode实现元素不重复;
当存入元素的哈希码相同时,会调用equals进行确认,如果结果为true,则拒绝后者存入;
存储结构:哈希表(数组+链表+红黑树)
存储过程:(1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空则执行第2步;
(2) 再执行equals方法,如果equals方法为true,则认为是重复,否则,形成链表;

TreeSet

基于排序顺序实现元素不重复;
实现了SortedSet接口,对集合元素自动排序;
元素对象的类型必须实现Comparable接口,指定排序顺序;
通过CompareTo方法确定是否为重复元素;
存储结构:红黑树

Map

用于存储任意键值对(Key-Value)
键:无序、无下标、不允许重复(唯一)
值:无序、无下标、允许重复

遍历:1、用keySet()拿到键

for(String key : map.keySet()) {
	System.out.print(key+map.get(key));
}

2、用entrySet()方法拿到映射对,效率更高

Set < Map.Entry< String, String > > entries = map.entrySet();
for(Map.Entry< String, String> entry : entries){
	System.out.print(entry.getKey()+entry.getValue());
} 

HashMap(线程不安全,效率高,允许用null作为key或者value)

存储结构:哈希表(数组+链表+红黑树)
未put元素时table是null,size为0,放入put后,size初值为16,α填装因子为0.75,若size不够则翻倍;
jdk1.8之后每个链表(尾插)长度大于8时,并且元素个数大于等于64时,调整为红黑树;
HashSet实际上用的是HashMap的key;

Hashtable(线程安全,效率低,不允许null作为key或者value)

TreeMap(实现SortedMap接口,对key自动排序)

类似TreeSet类要实现Comparable接口,指定排序顺序;

Colletions工具类(集合工具类,定义除了存取以外的集合常用方法)

void reverse(List<> list) //反转集合中元素顺序
void shuffle(List<> list) //随机重置集合元素顺序
void sort (List<> list) //升序排序(必须要实现Comparable接口)
int binarySearch(List<> list, T t)//未找到为负数
void copy(List<> dest, List<> list)//注意两个list的长度要相同才能复制

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:41:40  更:2022-01-04 13:43:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:27:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码