1246四个数字讲清集合框架!!!简单易懂且全面

1张图

          Collection(无序 可重复)                                               Map(存储K-V)

             |                           |                                                     |                   |

         List                         Set                                           HashMap        TreeMap

 (有序、可重复)            (无序 唯一)    

         /           \                      |             \

ArrayList   LinkedList       HashSet     TreeSet

2个知识点

  1:泛型

泛型就是在创建对象的时候可以确定它的类型

ArrayList<String> ls = new ArrayList<>();

  2:比较器

    A:内部比较器 对象自己比

当前类需要实现 java.lang.Compareable接口 重写compareTo方法

    B: 外部比较器 别人帮着比

需要实现java.util.Comparetor接口 重写compare方法

4个接口

   1:Collection

  存储特点:无序 可重复

  常见方法:

增:add,addAll

删:remove,removeAll,clear,retainAll,

改:

查:size,isEmpty,contains,

  迭代方式:

for:  不行

for-each: 可以

iterator:  可以

   2: List

存储特点:有序 可重复

常见方法: 除了Collection中之外增加了对于索引的操作

增:add(index),addAll(index)

删:remove(index),removeAll(index)

改:set(index,Obj)

查:get(index) subList()

迭代方式:

for:  可以

for-each: 可以

iterator:  可以

   3: Set

存储特点:无序 不可重复

常见方法:

和Collection一样

迭代方式:

for:  不行

for-each: 可以

iterator:  可以

   4: Map

存储特点:K-V  K 唯一,无序   V 可重复

常见方法:

增加:put(k,v) putAll(Map)

删除:remove(k) remove(k,v)

修改:

查看:entrySet(); values(); keySet(),contains(k)

      size() get(k)

迭代方式:

迭代key: keySet()->  Set集合 foreach和迭代器

迭代vlaue values()->  Collection foreach和迭代器

迭代k-v

keySet() ->  Set集合 + get(k)

  entrySet() ->  Set集合 => getKey()+getValue()

 6个常用类

1:ArrayList

底层结构:数组

存储特点:随机获取速度快,但是添加删除效率慢

常见方法:

和List一样

迭代方式:

for:  可以

for-each: 可以

iterator:  可以

ListIterator

2: LinkedList

底层结构:链表(双向链表)

存储特点:随机获取效率低 添加删除效率高

常见方法:

和List一样 多了一些针对于表头和表尾的操作

get、add、remove

peek、offer、poll

迭代方式:

for:  可以

for-each: 可以

iterator:  可以

ListIterator

3: HashSet

底层结构:哈希表 底层时一个HashMap

存储特点:什么都很高

常见方法:

和Set一样

迭代方式:

for:  不可以

for-each: 可以

iterator:  可以

注意事项:

如果添加自定义对象的时候需要重写hashcode和equals方法。

9-4: TreeSet

底层结构:红黑树 就是一个TreeMap

存储特点:比HashSet略低 可以比大小

常见方法:

和Set一样 多了一些比较的方法

ceiling()  floor()   power() heigher()

迭代方式:

for:  不可以

for-each: 可以

iterator:  可以

注意事项:

如果添加自定义对象的时候需要保证可以进行比较。

详细请看比较器

5: HashMap

底层结构:哈希表  所有的操作都是key为主

存储特点:什么都很高

常见方法:

和Map一样

迭代方式:

迭代key: keySet()->  Set集合 foreach和迭代器

迭代vlaue values()->  Collection foreach和迭代器

迭代k-v

keySet() ->  Set集合 + get(k)

entrySet() ->  Set集合 => getKey()+getValue()

注意事项:

如果添加自定义对象作为key的时候需要重写hashcode和equals方法。

6:TreeMap

底层结构:红黑树

存储特点:比HashMap略低 可以比大小

常见方法:

和Map一样 多了一些比较的方法

XXXEntry() XXXKey()

迭代方式:

迭代key: keySet()->  Set集合 foreach和迭代器

迭代vlaue values()->  Collection foreach和迭代器

迭代k-v

keySet() ->  Set集合 + get(k)

  entrySet() ->  Set集合 => getKey()+getValue()

注意事项:

如果添加自定义对象作为key的时候需要保证可以进行比较。

详细请看比较器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值