JAVA 数据结构----集合

本文详细介绍了Java中的集合框架,包括Collection接口和Map接口,以及它们的子接口List和Set,如ArrayList、Vector、LinkedList、HashSet、TreeSet和LinkedHashSet。还涵盖了Collections工具类提供的排序、查找等操作,以及Map中的HashMap、LinkedHashMap、Hashtable和TreeMap的特点和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合:

        表示一组被称为其元素的对象. 这个对象中存放着多个相同类型的元素. 不同类型的集合有不同的特点,比如:有些集合允许重复元素,而有的则不行; 又有的是有序的,而有的则无序。在java 中,集合分为Collection 集合和Map ,集合两大类.所有集合都直接或者间接通过实现Collection  或者Map  来实现集合特征.

  Collection集合接口

package java.util
public interface Collection<E> extends Iterable<E>

Map 集合接口

package java.util
public interface Map<K,V>     

Collection :  单列集合:

        继承了interface  java.lang.Iterable 接口,此接口提供了迭代器功能,能够通过hasNext(), next(), remove() 方法来实现向后遍历,以及删除功能.

子接口  List  &   Set

Collection <==       List <==     ArrayList    Vector    LinkedList

       有序可重复集合:

       实现List  常见的数据结构:

       1.    栈           特点:先进后出,

       2.    队列       特点:先进先出

       3.    链表,特点:增删快,查询慢. 底层实现原理:  可以在两端(双向/单向链表) 实现增删功能,但是查询需要遍历链表的每一个元素

       4.    数组,特点:增删慢,查询快. 底层增删实现原理为: 数组copy  与添加, 关键点为底层数组长度是否满足要求.,通过索引查询.

实现类:

      ArrayList:   底层数据结构为:数组,  特点: 查询快,增删慢, 线程不安全,效率高

      Vector: 底层数据结构:  数组,特点: 查询快,增删慢,线程安全,效率低下    由于效率低下(不推荐使用)

      LinkedList: 底层数据结构:  链表,特点: 增删快,查询慢, 线程不安全.    对于需要频繁增删而查询需求不高的可以用此集合

Collection <==       Set  <==     HashSet     TreeSet   LinkedHashSet

     无序唯一集合,  集合中的元素添加和取出时的顺序不一致,  (LinkedHashSet 例外)   不能有重复元素存在, 元素重复的判定依据:根据hashCode 和 equals 方法判定..

     HashSet : 底层数据结构:Hash表,    不排序,唯一

              判定两个元素是否为重复元素

              执行顺序: 首先比较哈希值是否相同

                   相同:继续执行equals()方法

                         返回true:元素重复了,不添加

                        返回false:直接把元素添加到集合

                   不同:就直接把元素添加到集合
   TreeSet: 底层数据结构: 红黑树(自平衡二叉树)   排序,唯一

          保证元素的排序方式

             a:自然排序(元素具备比较性)     ==>       让元素所属的类实现Comparable接口 compareTo()方法

             b:比较器排序(集合具备比较性)     ==>      让集合构造方法接收Comparator的实现类对象 compare()方法 匿名内部类实现

Collections : 单列集合工具类, 定义了对部分单列集合诸如排序,查找,反转等操作的集合工具

   常见的几个方法:

public static <T> void sort(List<T> list);  // 排序
public static <T> int binarySearch(List<?> list,T key) ; // 二分查找
public static <T> T max(Collection<?> coll);  // 最大值元素
public static void reverse(List<?> list);  // 集合反转
public static void shuffle(List<?> list);  // 重新打乱集合
 

 Collection和Collections的区别 

        A:Collection 是单列集合的顶层接口,有两个子接口List和Set , map是双列集合很多用于集合嵌套

        B:Collections 是针对集合进行操作的工具类,可以对集合进行排序和查找等

Map 双列集合:

     与Collection单列集合对应的, Map<K,V>  为双列集合, 即是集合中的元素以键值对的方式来储存,并对键进行约束,多个键可以对应同一个值.

     Map 体系:

            |--HashMap   底层为hash表结构的集合, 键是无序的,不重复,线程不安全,速度快

                 |--LinkedHashMap   可预知顺序的集合,底层为针对键排序的链表集合, 键是有序的,不重复,线程不安全,速度慢

            |--Hashtable   底层为hash表结构的集合  键无序,不重复,线程安全,速度慢

            |--TreeMap     底层为针对键进行二叉树排序的集合, 键有序,不重复

HashMap 

      底层为哈希表的双列集合。对键进行无序唯一约束,放入相同键时,新的值会将旧的值覆盖。是最常用的Map集合。

特点

     -线程不安全, 速度快,  允许存放null键,null值

Hashtable
    底层为哈希表的集合,已被HashMap替代。Hashtable的Properties用于配置文件的定义和操作,键和值都是字符串,是集合中可以和IO技术相结合的对象
特点,  

    线程安全,  速度慢,  不允许存放null键,null值,  命名方式不符合标准大驼峰式

TreeMap

      对键进行排序,排序原理与TreeSet相同的Map集合。排序方式同TreeSet,    使键实现Comparable接口,重写compareTo方法.创建集合对象时,传入Comparator对象,重写compare方法
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Asial Jim

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值