javase 集合
2021/12/30 17:37:19
本文主要是介绍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 的方法
这篇关于javase 集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解