集合特点

List集合

  • ArrayList:底层是数组,数组是连续存储的,内存地址连续所有查询效率高,增删慢。

  • LinkendList:底层是链表结构,链表结构内存散乱,但是每个元素储存本身地址还会储存下一个元素的地址,所以增删快。查询慢

  • Voctor:底层是数组,线程安全,增删查慢。

Map集合

  • hashMap:是map集合的子类,允许键值为null,非线程安全、高效

  • hashTable:线程安全,低效,不允许键和值为null

  • linkendHashMap:是hashMap的一个子类,会记录数据插入信息

  • ScortMap:TreeMap保持的纪录会根据key来排列,默认是升序排列

Set集合

  • HashSet:底层有hashMap实现,不允许集合中有重复的值,使用时重写equals和hashCode方法
  • LinkedHashSet:继承HashSet,同时又基于LinkedHashMap来实现,底层使用的是LinkedHashMap

结构特点

  • list集合是单列数据的集合,集合数据有序
  • map集合是双列数据集合,其以key-value的形式,key值不允许重复,value可以重复
  • set集合是单列数据的集合,集合数据有序,但是元素在集合中的位置取决于hashCode决定,所以位置是固定的,但是用户不能够控制位置,所以对于用户来说是无序的

数组和链表的区别

  • 数组是将元素连续的储存在内存空间中,内存地址连续,查找数据效率很高,但是在储存之前要向申请一块连续的内存空间,并且在编译之前就要确定内存空间大小,在运行时的空间大小不能随着自己的需要而增加和减少而改变,当数据量大时会导致数组大小越界,数据比较小时,又浪费内存空间。
  • 链表是动态的申请内存空间,对于数据的增加删除比较灵活,不需要像数组那样提前申请一块固定的内存空间。链表只需要在使用时申请就可以了,根据需要可以申请或删除内存空间,链表中的数据可以在任意位置,通过应用来关联数据。

猜你喜欢

转载自blog.csdn.net/qq_40417251/article/details/114694345
今日推荐