ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javase 集合

2021-12-30 17:34:36  阅读:123  来源: 互联网

标签:set 迭代 元素 线程 集合 javase 方法


集合

在这里插入图片描述
集合
collection
list和set集合(泛化关系:is a)
1.list有序可重复
2.set无序不可重复
iterator(关联关系:has a)
实现关系(like a)
list集合:arraylist集合,linkedlist集合,vector
数组(非线程安全)、双向链表、数组(线程安全)
vector(所有的方法都有synchronized,但是效率比较低,现在有别的方法保证线程安全,所以使用较少了)
set集合:hashset,实际上实现了一个hashmap集合,使用了哈希表数据结构
treeset:实际上实现了一个treemap集合,底层使用了二叉树数据结构

map
map一key和value这种键值对的方式存储元素,key和value都是存储java对象的内存地址
hashmap底层是hash表,非线程安全
hashtable也是哈希表,线程安全效率低,现在用的少,因为有更好的方案
treemap

map集合中的key就是一个set集合,往set集合中放数据,实际上是放入了map集合中的key部分

collection

collection集合中的方法
add,添加元素,因为有自动装箱的机制,所以可以加很多种数据类型
size,获取集合中元素的个数
clear,清空集合
contains,是否包含
remove移除

关于集合遍历、迭代
在collection集合类通用(重要)
迭代器方法:hasnext,next
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
string类的equals方法重写了,比较内容不比较内存地址
contains方法底层调用了equals方法。
放在集合里面的元素要重写equals方法
integer类的equals方法重写了
remove方法调用了equals方法
迭代集合元素过程中,不能调用集合对象的remove删除元素,会出现异常(改变了集合结构,需要重新获取迭代器),集合中元素删除,但是没有更新迭代器
c2.remove()
使用迭代器删除可以吗?
可以(自动更新迭代器和集合)

list

get方法,根据下标获取元素
在这里插入图片描述
arraylist集合,底层是object数组,初始容量是10
扩容,增长到原容量的1.5倍
优化:尽可能少的扩容
右移一位等于除以2
优缺点:检索效率高 ,增删元素效率低(不包括数组尾)
集合用啥比较多,是arraylist集合,因为向数组末尾添加元素,不受影响,另外检索元素操作比较多
数组尾部添加元素为什么效率高
不需要遍历,放元素效率较高
链表优缺点:增删元素效率高(因为内存地址不连续,不涉及大量元素位移),查询效率低,需要从头结点遍历

在这里插入图片描述
vector
底层也是一个数组
初始容量是10,满了之后扩容,扩容特点是原容量2倍
arraylist集合扩容是原容量1.5倍
vector是线程同步的,线程安全的,效率较低
将arraylist变成线程安全的操作方法
在这里插入图片描述

mylist就会变成线程安全的
泛型机制
不用泛型的代码,取出对象之后,需要向下转型

在这里插入图片描述

用泛型来指定集合中的数据类型
在这里插入图片描述
泛型的缺点:集合中存储的元素缺乏多样性
大多数业务中,集合中元素类型是统一的
但是调用子类型特有的方法,还是需要转型
在这里插入图片描述

在这里插入图片描述

自定义泛型

hashset集合特点:无序不可重复
存储顺序和取出的顺序不一样
取出来的数值放到key部分了
treeset集合特点无序不可重复,但是可以按照大小排序
从小到大自动排序

map 的方法

标签:set,迭代,元素,线程,集合,javase,方法
来源: https://blog.csdn.net/qq_36451293/article/details/120819688

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有