zoukankan      html  css  js  c++  java
  • Java集合Collention

    • 集合:又被称为容器,用来存储数据,他是一个对象,能够将具有相同性质的多个元素汇聚成一个整体,集合被用于存储,获取,操纵和传输聚合的数据。

    • 这种数据结构称为集合 Collenction:他是集合的根接口,定义了所有集合的相关功能方法。

    • 数组和集合的区别:

    • 数组

      集合

      存数据

      存数据

      存同一种数据类型的数据

      存任意数据类型

      数组中没有方法

      集合中提供了很多方法供我们操作

      存储基本数据类型和引用数据类型String

      存储引用数据类型(对象)

      • ArrayList:是接口List的常用实现类,ArrayList的底层是以数组实现的,且数组容量可变(初始容量是10,存多于10个就要扩容,底层就要创建新的数组)ArrayList可以存储null值。

      • ArrayList是不同步的,即不保证线程安全的。

      • 扩容机制是按照1.5倍进行扩容的,选择初始容量的时候要进行斟酌。

      • ArrayListList方法与Collention中的方法完全一致!存储都是有序的,且可以有重复

      • LinkedList

        • 底层使用链表实现,方法与ArrayList相同,允许存储null值,

        • LinkedList是不保证线程安全的。

        • Collention接口中的方法,ArrayList中的方法,LinkedList都可以使用。

        • ArrayList LinkedList的优缺点:

          ArrayList

          LinkedList

          底层以数组实现所以通过下标取值、赋值效率高,在内存上的地址是连续的

          底层是链表结构实现的,所以通过下标取值赋值效率低。在内存上是不联系的

          添加删除元素效率低

          添加删除元素效率高

        • LinkedList因为以链表实现的集合,操作开头和结尾方便,所以其提供了除List之外的常见方法外,还提供了专门操作开头和结尾元素的方法,例如 addFirst()addLast()等方法。

      Set

      • SetCollention的子接口

      • Set集合不包含重复元素

      • Set接口中的方法与Collention中的方法一模一样,set中的元素不允许有重复的值。添加成功返回true,不成功返回false

      HashSet

      • 类 是Set 的实现类,不允许有重复元素,不保证迭代顺序(也就是无序的,也就是输出的结果跟插入的顺序不一致。),不保证线程安全。所以HashSet的方法与Collention方法一致,允许null值。

      HashCode:利用HashSet存储自动以对象,使去除重复,就是想要保证自定义对象去重

       → 在自定义类中重写equalsHashCode方法即可,当HashCode相同的时候才会去执行equals,如果HashCode直接不同了,那么equals将不用再执行了。

    • TreeSet

      • TreeSetSet的常见的子实现类,只要是Set的子类都不能存储相同元素)(也就是不允许元素重复),并且Set下的实现类都不能通过下标操作

      • TreeSet是对元素进行自然顺序(默认升序)排序,或者根据创建set的时候提供Comparator进行排序。

      • TreeSet是不保证线程安全的。

      • 基于TreeMap实现,使用元素的自然顺序对元素进行排序。且树是没有容量的。

      • 从写自定义对象时,该对象的类需要实现Comparable接口,重写其ComparTo方法。

      • 例如存储学生对象,按年龄排序。

        • 重写ComparTo方法 ,return返回0只存第一个,返回负数和正数都能够排序,具体效果经过尝试。

        LinkedHashSetlinked Hashset的结合体,能保证数据不重复并且有序(按照输入顺序排序)



    我会慢慢更新一下Java 的学习知识,在我所写的内容中有不懂的可以直接私信我。
  • 相关阅读:
    Python 生成器
    Python 装饰器
    Go语言【第十四篇】:Go语言基础总结
    Go语言【第十三篇】:Go语言递归函数
    Go语言【第十二篇】:Go数据结构之:切片(Slice)、范围(Range)、集合(Map)
    Go语言【第十一篇】:Go数据结构之:结构体
    Java入门之:对象和类
    Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 04
    Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 03
    Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 02
  • 原文地址:https://www.cnblogs.com/interflow/p/11255879.html
Copyright © 2011-2022 走看看