[JAVASE]笔记12

容器:可变长的,任意数据类型的数据的数组:
定长的
数据类型相同的
有序,有索引,根据索引查询效率高

集合:Collection
成员方法:
容器可以存储任意类型的数据
泛型中的数据类型只能为引用类型,基本数据类型会发生非自动装箱

遍历:
1、增强for循环
2、迭代器
注意:不能使用普通for循环,因为这是Collection接口,他的子接口Set是无序的,所以为对应其特性,负借口中是没有关于索引的操作的。
方法:boolean add(E e)
void clear() 移除此 collection 中的所有元素(可选操作)。
boolean contains(Object o)如果此 collection 包含指定的元素,则返回 true。
equals (重写问题)
boolean isEmpty() 如果此 collection 不包含元素,则返回 true。
boolean remove(Object o)
removeAll(Collection)
int size() 返回此 collection 中的元素数。
Object[] toArray() 返回包含此 collection 中所有元素的数组。
List接口
有序的,可重复的
新增功能:新增了一些关于索引操作的方法
新增方法:
E get(int index)
remove(ele|index) 如果数据和索引都是整数,默认把参数认为index
List subList(int fromIndex, int toIndex) toIndex取不到
List接口的遍历:
1、普通for循环
2、for…each
3、迭代器
4、注意:在进行存在方法的并发修改的时候可以使用ListIterator列表迭代器

泛型:定义、规范容器中所有元素的数据类型,强制规范,如果不符合报错
作用:增强程序的稳定性和可读性

ArrayList 有序的可重复的
底层:数组实现,进行动态扩容,每次使用copyOf方法进行扩容,每次扩容后的容量是原容量的1.5倍
优点:随机获取或者遍历效率高
缺点:增删效率低
线程不安全,效率高
Vector 向量
底层:数组实现,使用copyOf方法进行动态扩容,每次扩容是原容量的2倍
线程安全,效率低
LinkedList
底层:双向链表实现
优点:做增删效率高
缺点:查询和遍历效率低

新增功能:新增了一些操作与头部和尾部的方法
void addFirst(E e)
将指定元素插入此列表的开头。
void addLast(E e)
将指定元素添加到此列表的结尾。
E element()
获取但是不移除此列表的第一个元素(头)

Set接口
无序的 不可重复
放入的数据的顺序和内部真实存储的顺序不一致,内部有自己的储存顺序,一旦确定了储存顺序不会发生改变
无序:说的是插入的顺序和输出的顺序不一致
HashSet
底层:哈希表结构(数组+链表+红黑树)
优点:查询,添加,删除,修改效率高
缺点:无序

1、如果两个对象的hashcode值不相同,两个对象肯定不相同,如果值相同,可能是相同对象可能不是相同对象
2、对对象类型数据进行去重:要重写hashCode和equals方法。这里重写hashcode只是将类的属性值给拼接到元hashcode表中去了,表示更加的精准
3、先比较hashCode,如果值不同,不会调用equals方法,如果值相同才会调用equals方法
TreeSet
底层:红黑树
优点:升序排序
注意:
放入引用类型数据时,对引用类型的数据进行排序:
1、内部比较器:实现Comparable接口,重写compareTo方法,自定义比较规则
2、外部比较器:实现Comparator接口,重写compare方法,自定义比较器

Map
存储的数据都是key,value键值对的形式的
key可以是任意类型数据 无序的唯一的 —>set结合
value 可以是任意类型的 无序的不唯一的 —>Collection结合
一个key只能对应一个value(value可以为集合,集合中存储多个数据)

方法:V get(Object key)
boolean containsKey(Object key)
如果此映射包含指定键的对应关系,则返回true
boolean containsValue(Object value)
remove(key)

HashMap
HashSet是由HashMap维护的,但是HashMap是键值对的形式,初始容量为16,加载因子是0.75
底层是hash表的结构
HashMap的key如果是引用数据类型的对象,做去重要重写hasCode和equals方法
如果想要实现value去重,需要手动判断

HashMap的线程安全问题:
1、使用HashTable
2、SynchonizedMap–>Collections工具类中提供方法获取线程安全的Map
3、juc包下储存ConcurrentHashMap类

TreeSet是由TreeMap的key维护的,使用方式相同,但是是键值对的形式

1、要能够灵活运用ArrayList HashMap
2、知识点的掌握,对于不同容器类的区分,线程安全问题扩展机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值