Java 中的集合

集合

  • 纲要

    Collection 和 Iterator

    List

    Set

    Map

    Collections工具类

    Comparable 与 Comparator

  1. 数组其实也是一个集合。集合实际上就是一个容器,可以容纳其他类型的数据
  2. 集合是一个容器一个载体,可以一次容纳多个对象
  3. 在实际开发中,假设连接数据库,数据库中有10条记录,那么假设把这10条记录查询出来,在Java程序中会将10条数据封装成10个Java对象,然后将10个Java对象放到某一个集合中。将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。
  4. 集合不能直接存储基本数据类型,也不能直接存储java对象,集合中存储的都是java对象的内存地址。(或者说集合中存储的是引用)
  5. 注意:
  • 集合在java中本身是一个容器,是一个对象
  • 集合在任何时候存储的都是引用
  1. 在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构中什么是数据结构?数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。例如:
    数组、二叉树、链表、哈希表。。。图

​以上这些都是常见的数据结构。

​你往集合c1中放数据,可能放在数组上了。使用不同的集合等同于使用了不同的数据结构。

  1. 集合在Java JDK中哪个包下:
  • java.util.*;所有的集合类和集合接口都在这个java.util包下
  1. 为了更好的掌握集合这块内容,最好可以将集合的继承结构图背会!!!

  2. 在Java中集合分为两大类:

    • 一类是单个方式存储元素:单个方式存储元素,这一类集合中超级父接口:java.util.Collection
    • 一类是以键值对儿的方式存储元素:键值对儿的方式存储元素,这一类集合中超级父接口:java.util.Map

Iterator it= “Collection 对象”.iterator();it是迭代器对象。

所有集合继承Iterable的含义是,所有集合都是可迭代的。遍历就是迭代

  1. List集合存储元素的特点:有序可重复,存储的元素有下标,有序实际上是存进去是这个顺序,取出来还是这个顺序,这里的顺序不是按照大小排序。List集合都有下标,下标从0开始
  2. Set集合存储元素的特点:无序不可重复,存进去进去是这个顺序,取出来不一定是这个顺序了,另外Set集合中元素没有下标,Set集合中的元素不能重复。
  3. ArrayList:ArrayList集合底层采用了数组这种数据结构。ArrayList集合是非线程安全的。
  4. LinkedList:LinkedList集合底层采用了双向链表数据结构
  5. Vector:Vector集合底层采用了数组这种数据结构,Vector集合是线程安全的,Vector所有的方法都有synchronized关键字修饰的,所以线程安全,但是效率较低,现在保证线程安全有别的方案,所以Vector使用较少了。
  6. HashSet:实际上HashSet集合在new的时候,底层实际上new了一个HashMap集合,向HashSet集合中存储元素,实际上向HashMap存储元素。HashMap集合是一个哈希表数据结构
  7. TreeSet:TreeSet集合底层实际上是TreeMap,new TreeSet集合的时候,底层实际上new了一个TreeMap集合。往TreeSet集合中放数据的时候实际上将数据到TreeMap集合中了。TreeMap集合底层采用了二叉树数据结构。

  1. SortedSet:这是一个接口,SortedSet集合存储元素特点:由于继承Set集合,它也是无序不可重复,但是放到SortedSet集合中的元素可以自动排序,我们称为可排序集合,放到该集合中的元素是自动按照大小排序的
  2. Map集合和Collection集合没有关系。Map集合以key和value的这种键值对的方式存储元素。key和value都是存储java对象的内存地址。所有Map集合的key特点:无序不可重复。Map集合的key和Set集合存储元素特点相同。
  3. HashMap集合:底层是哈希表数据结构,是非线程安全的。
  4. Hashtable集合:底层是哈希表数据结构。是线程安全的,其中所有的方法都带有synchronized关键字,效率低,现在使用较少了,现在有控制线程安全更好的方案。

  1. 总结:
  • ArrayList:底层是数组

  • LinkedList:底层双向链表

  • Vector:底层数组,线程安全,效率较低,使用较少

  • HashSet:底层HashMap,放到HashSet的元素,等同于放到HashMap集合key部份了

  • TreeSet:底层是TreeMap,放到TreeSet集合的元素等同于放TreeMap集合的key部份

  • HashMap:底层哈希表,

  • Hashtable:底层哈希表,线程安全,效率较低,使用较少

  • Properties:线程安全,key和value只能存储字符串String

  • TreeMap:底层二叉树,TreeMap的key可以自动按照大小顺序排序

List集合存储元素特点:有序可重复,这里的有序指的是:存进去的顺序和取出来的顺序相同。

Set集合存储元素的特点:无序不可重复。

SortedSet集合存储元素的特点:首先无序不可重复,元素是可排序的。

Map集合的key,就是一个Set集合。往Set集合中放数据,实际上放到Map集合的key部份。

posted @ 2024-02-01 13:00  十几里路  阅读(61)  评论(0)    收藏  举报