小码笔记15:List、Set、Map集合

本文详细介绍了Java集合框架中的List、Set和Map。List接口中重点讲解了ArrayList和LinkedList的特点及用途;Set集合强调了不允许重复元素,特别是HashSet、LinkedHashSet和TreeSet的特性;Map接口及其子类HashMap、LinkedHashMap、Hashtable和TreeMap的存储结构和遍历方式进行了深入探讨。
摘要由CSDN通过智能技术生成

这里查看小码笔记上一期的数据结构笔记

梗概:

1.List:
  1. 可以允许重复的对象。
  2. 可以插入多个null元素。
  3. 是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
  4. 常用的实现类有 ArrayList、LinkedList 和 Vector。
    ArrayList 最为流行,
    它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适
2.Set:
  1. 不允许重复对象
  2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。
  3. 只允许一个 null 元素
  4. Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。
    最流行的是基于 HashMap 实现的 HashSet;
    TreeSet 还实现了 SortedSet 接口,
    因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。而且可以重复
3.Map
  1. Map不是collection的子接口或者实现类。Map是一个接口。

  2. Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,
    Map 可能会持有相同的值对象但键对象必须是唯一的。

  3. TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。

  4. Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。

  5. Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)

以下详解:

一、List集合

java.util.List接口

  • 上层接口implements Collection接口
  • 下层实现类 ArrayListVectorLinkedList
    总结:有顺序的Collection
1.List接口特点
  • 有序的集合 ,存储和取出元素的顺序是一致的
  • 有索引,包含一了些带索引的方法
  • 允许重复的元素(Set不包含重复元素)
2.常用方法(List特有)
带索引的方法(List特有)  
1.void      add(int index ,E element) 将指定的元素添加到指定位置上(不写索引默认添加到最后)

2.E        get(int index)  返回指定索引的元素

3.E        remove(int index)  删除指定索引的元素,返回删除的元素

4.E         set(int index ,E emement)
            用元素替换集合中指定位置的元素,返回更新前的元素 
(注意索引越界异常) 
3.遍历方式(同Collection,三种)

同上层的Collection,for循环,foreach循环,Iterator遍历

4.List下层:ArrayList、Vector
  • ArrayList java.util.ArrayList 最常用的集合

  • Vectorjava.util.Vector

  • 共同点:

    • 上层接口都是List接口

    • 存储的结构是数组结构。

    • 特点 :元素增删慢,查询快

  • 不同点:

    • Vector 线程安全/线程同步 ,比较慢,已经被淘汰
    • ArrayList 线程不安全/线程不同步
4.List下层:LinkedList

java.util.LinkedList

  • 上层接口: List接口

  • 储存结构是双向链表结构

  • 特点

    • 底层是一个链表结构:元素查询慢,增删快
    • 双向链表结构,包含了大量操作首尾的方法
      在这里插入图片描述
  • 常用方法

双向链表结构,包含了大量操作首尾的方法 
这是LinkedList特有的方法,使用这些方法不能使用多态
1. void      addFirst(E e)  将指定元素插入列表的开头 
   void      addLast(E e) 将指定元素插入列表的结尾

2. void      push(E e)将元素推入此列表表示的堆栈

3. E         getFirst() 返回此列表的第一个元素。
   E         getLast()  返回此列表的最后一个元素。

4. E        removeFirst() 移除并返回此列表的第一个元素。
   E        removeLast()  移除并返回此列表的最后一个元素。
   E        pop()        从此列表所表示的堆栈处弹出一个元素。

5. boolean    isEmpty()   判断是否为空

二、Set集合

java.util.Set接口

  • 上层接口implements Collection接口
  • 下层实现类 HashSetLinkedHashSetTreeListEnumSet(专门用于枚举类型的Set)
  • 总结:去重复的Collection
1.Set接口特点
  • 不允许存储重复元素的
    (底层是Map接口的K,此时V默认为Object类型对象)
  • 没有索引
    所以不带索引方法,也不能使用普通的for循环遍历
    只能用增强的for循环和迭代器遍历
2.遍历(比List少一种,两种࿰
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码为海

你的支持是我更新最大得动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值