1.集合和数组的区别

1)大小:数组是大小固定的,一旦创建无法扩容;集合大小不固定,空间不足时自动扩增容量。

2)存放类型:数组能存放基本数据类型和对象,集合类存放的是对象的引用,而不是集合本身。

3)执行效率:数组是java语言中内置的数据类型,执行效率是最快的。

联系:使用相应的toArray()和Arrays.asList()方法相互转换。


2、集合的特点:

1)集合只能存放对象。比如存在的是int类型的数据,其实是自动转换成integer类后存入的。

2)集合存放的是多个对象的引用,对象本身还是放在堆内存中。

3)集合可以存放不同类型、不限数量的数据类型。

然后,我们先看一下实现继承关系:


Java中集合的详细介绍

Collection接口是最基本的集合接口,一个Collection代表一组Object。Collection是一个接口,Collection下边有两个子接口List和Set,List通过下边来取得值,值可以重复;set只能通过游标来取得值,值不可以重复。Map不是Collection接口的继承,而是从自己的用为维护键-值关联的接口层次结构入手。

<一>List

List的特点是有序、可重复。常用的List有ArrayList、LinkedList、Vector。

1、ArrayList:底层结构是数组,查询快,增删慢,线程不安全,效率高。

2、LinkedList:底层结构是链表,查询慢,增删快,线程不安全,效率高。

3、Vector:底层结构是数组,增删快,查询慢,线程安全,效率低。因为Vector用Synchronized关键字进行了修饰,所以线程安全,也就导致了它的工作效率低。


<二>Set

Set的特点是无序、唯一。常用的Set有HashSet、LinkedHashSet、TreeSet。

1、HashSet:底层结构是哈希表,哈希表依赖两个方法,hashCode()和equals(),所以Set中添加的对象要自动生成hashCode()方法和equals()方法。HashSet判断两个元素是否相同的执行过程是:判断hashCode()值是否相同,相同,执行equals(),看起返回值,为true说明元素重复,不添加,为false直接添加到集合,不相同,直接添加到集合。

2、LinkedHashSet:底层结构是单链表和哈希表,由单链表保证数据有序,由哈希表保证了数据唯一。

3、TreeSet:底层结构是二叉树,线程不安全。TreeSet可以对集合中的元素进行指定方式的排序。TreeSet有两种排序方式:自然排序(让元素所属的类实现Comparable接口,调用集合元素的compareTo(Object obj)方法比较元素之间大小关系,然后将集合元素按升序排序)、定制排序(让集合接收一个Comparator的实现类对象,由该Comparator实现类对象负责集合元素的排序逻辑)

相关文章:

  • 2022-02-08
  • 2021-05-27
  • 2021-09-14
  • 2021-09-22
  • 2022-12-23
  • 2021-05-18
  • 2021-09-27
猜你喜欢
  • 2021-11-01
  • 2021-12-04
  • 2021-11-23
  • 2021-09-05
  • 2021-10-29
  • 2021-12-15
  • 2021-08-12
相关资源
相似解决方案