学习笔记之集合

本文深入解析Java集合框架,包括List、Set、Map等主要接口及其典型实现如ArrayList、LinkedList、HashSet、TreeSet、HashMap和LinkedHashMap。探讨了各种集合的特点、应用场景及内部实现机制。
摘要由CSDN通过智能技术生成

Collection:List 和Set

是所有单列(E emelement)集合中的共性方法,所有单例集合都可以使用共性方法
没有带索引的方法
单例都可以用foreach遍历,增强for循环目标只能是集合和数组

List接口:

Vector集合 同步,单线程,慢 {(ArrayList集合查询快增删慢) (LinkedList集合查询慢增删快)不是同步,就是多线程 效率高 速度快}
List集合有序集合 允许重复的元素 有存取顺序 有索引可以for循环遍历

List接口带索引的方法;

add(index,element)添加该元素到指定位置上
set(index,element)添加该元素替换指定位置的元素

Set接口:

无序:TreeSet集合(二叉树实现一般用于排序) HashsSet集合(哈希表+(红黑树)实现)
有序: LinkedHashSet集合(哈希表+链表实现 可以存取有序)
Set集合 存取无序 不允许存储重复元素 没有索引不能for遍历 不同步

普通for循环遍历:
for(int i=0;i<list.size();i++){
Sting s=list.get(i);
Syso(s);}

所有集合都可以用的遍历方式:

迭代器遍历:

Iterator it=collection.iterator();
while(it.hasNext()){
String s =it.next();
Syso(s); }

增强for遍历:

数组:
for(String s:collection){
syso(s);}
int[]arr={1,2,3};
for(int a:arr){
syso(a);}

Map接口:

多列(K key键,V value值)一一对应 key不可以重复(key唯一),value可以重复 两个类型可以相同可以不同

HashMap:

底层是哈希表,查询速度特别快、是无序集合 存储和取出顺序可能不一致
map.put(“a”=“a”) map.put(“c”=“c”)map.put(“b”=“b”)map.put(“a”=“d”)
key不允许重复,无序{a=d,b=b,c=c}最后输入的替换了之前的key

作为key的元素,必须重写hashcode和equals方法以保证key唯一

1.8之前:哈希表=数组+单向链表
1.8后 :哈希表=数据+单向链表。哈希表=数组+红黑树(链表长度超过8)(提高查询速度)
linkedhashmap继承hashmap
底层哈希表+链表(保证迭代顺序)
是一个有序集合,存储好取出顺序一致
map.put(“a”=“a”) map.put(“c”=“c”)map.put(“b”=“b”)map.put(“a”=“d”)
key不允许重复,有序{a=d,c=c,b=b}最后输入的替换了之前的key

 map.put(k,v)指定的键和值添加到map集合
返回值v
     存储对的时候,key不重复,返回是null

存储对的时候,key重复,会使用新的V替换map重复的V,返回被替换的v

map遍历

Map<String,Integer> map=new HashMap<>();
Set set=map.keySet();
for (String key:set)
{
Integer value=map.get(key);
System.out.println(key+"="+value);
}

使用entry(等于结婚证) foreach遍历

Map<String,Integer> map=new HashMap<>();
Set<Map.Entry<String,Integer>> set=map.entrySet();
for (Map.Entry<String,Integer> entry:set)
{ String key=entry.getkey;
Integer value=entry.getvalue;
System.out.println(key+"="+value);
}

额外知识:

两个元素不同,哈希值相同,哈希冲突
哈希相同,调用equals比较值认定相同,就不会存储到集合
哈希相同,调用equals比较值认定不同,就存储到集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值