• java的集合之间的关系


    一、集合结构大纲

    一、 集合于数组的关系

    二、集合的分类

    1.  Collection代表单列集合。
    2.       List接口:按元素进入顺序排序,元素可重复。
    3.              ArrayList:List接口实现类,数组实现,线程不安全,不同步。
    4.              LinkedList:List接口实现类,链表实现,线程不安全,不同步。
    5.              Vector:List接口实现类,数组实现,线程安全,同步。
    6.        set接口:元素不可重复
    7.               HashSet:数组实现
    8.               TreeSet:二叉树实现,元素自动排序
    9. Map代表双列集合(键值对)
    10.         HashMap数组加链表实现,线程不安全,不同步。
    11.         Hashtable线程安全,同步。
    12.         ListedhashMap,key有序。
    13.         TreeMap:红黑树实现对所有key排序。

    二、Comllection详解

    一、常用方法

    1. addAll:合并的元素拿出放到自己元素后面。
    2. containsALl:判断集合中的元素是否全都存在
    3. removeAll 将集合参数中的元素中出现的逐个删除
    4. indexOf:第一次出现的位置
    5. lastINdexOf最后一次出现的位置。

    因为List接口和Map接口都实现了Collection,所有它们的子类都实现以上方法,所有继承之List和Map的类都能使用以上方法。

    二、List和Set

    一、List和Set的区别

    属性Listset
    有序性有序无序
    唯一性不唯一唯一
    获取元素索引无法直接获取

    注意:我们常说的有序和无序有两种情况,一种是存进去的顺序和取出来的顺序是一样的叫有序;一种是存进去之后java内部以某种固定的排序方法排序我们也叫有序。List和Set的有序和无序针对的是第一中情况,取出来的顺序和拿出来的顺序是一样,叫做有序。

    二、List详解


    ArrayList和LinkedList的比较

    增加删除修改查询
    ArrayList
    LInkedList

     

     三、set详解

    • HashSet

    底层是HashMap,我们存进去的值当作key,value由java内置一个常量代替。

    • LinkHashSet

    继承之HashSet。有序的hashMap。

    • TreeSet

    底层:平衡有序二叉树(TreeMap)。要注意的是,存进去的数据要可以比较,如果不能比较,就要实现Comparable方法,重写ComparaTo方法。

    三、使用场景分析

    三、Map详解

    一、常用方法

    二、HashMap

    底层采用数组加单向链表实现,线程不安全,key和value可以为空。

    1. public static void main(String[] args) {
    2. Map map = new HashMap<>();
    3. map.put("name","ze");
    4. map.put("age","14");
    5. map.put("sex","男");
    6. //修改
    7. map.put("sex","女");
    8. //计算长度
    9. System.out.println(map.size());
    10. //通过key获取value
    11. System.out.println(map.get("name"));
    12. //判断是否为空
    13. System.out.println(map.isEmpty());
    14. //查找是否有该key,和该value。返回boolean值
    15. System.out.println(map.containsKey("age"));
    16. System.out.println(map.containsValue("14"));
    17. //putAll.向一个map中添加另一个map的数据
    18. Map map1 = new HashMap<>();
    19. map1.put("color","red");
    20. map1.put("id","1");
    21. map.putAll(map1);
    22. System.out.println(map);
    23. //清除map中的内容
    24. map1.clear();
    25. System.out.println(map1);
    26. //remove,更具key删除。
    27. map.remove("age");
    28. System.out.println(map);
    29. }

    三、HashTable

    和HashMap相似,但是它线程安全且key和value不能为空;而HashMap可以为空。

    四、HashMap和HashTable的比较

    HashMap线程不安全,HashTable线程安全;HashMap的key和value可以为空,但是HashTable的不可以为空。

    HahsMap和Hashtable的key都是无序的,但是java还提供了一个有序的LinkedMap。

    五、TreeMap

    底层采用有序平衡二叉树。

     

     

    四、小结

    线程是否安全ListMapString
    线程不安全ArrayList、LinkedList、HashSet、HashMapStringBuilder
    线程安全VectorHashTableStringBuffer
    数据结构代表特点
    数组ArraXxx查询快,增删慢,元素有序可重复
    链表LinkedXxx增删快,查询慢,元素有序可重复
    哈希表HashXxx实现依赖hashCode()和equals(),元素无序不可重复
    二叉树TreeXxx两种方式排序:自然排序和比较器(Comparable)排序,元素有序不可重复
    LinkedHsahXxx有序不可重复

       可以发现,当某一个集合是HashXxx的时候,它的不可重复是依赖于hashCode()和equals();当一个集合是TreeXxx的时候,它的有序和不可重复是依赖于重写Comparable。
     

  • 相关阅读:
    JavaScript工具函数大全
    Python编程基础 | Python编程基础面向对象编程
    HTML表格标签
    JS正则表达式
    项目一:《小米官网》jQuery重构
    Android Jetpack Compose之确定重组范围并优化重组
    关于VO、BO、DTO、PO、Entity、DO的说法
    mysql数据库、表、列的字符集和校对规则
    自己动手从零写桌面操作系统GrapeOS系列教程——5.GrapeOS开发环境测试
    NX二次开发-UFUN获取显示在NX交互界面的对象UF_OBJ_is_displayable
  • 原文地址:https://blog.csdn.net/m0_52261367/article/details/126086552