💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

【集合List系列一】集合概述_数组

  • 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
  • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
  • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
  • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
  • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
  • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨


博客目录

  • 1.Java 中容器有哪些?
  • 2.说说 List,Map,Set?
  • 3.set 的类继承结构?
  • 4.set 集合的特点?
  • 5.常见的 set 集合?
  • 6.Arrays.copyOf()


1.Java 中容器有哪些?

java 容器主要有 Collection 和 Map 两大类,还有他们的子类和实现类

  • Collection
  • List
  • ArrayList
  • LinkedList
  • Vector
  • Stack
  • Set
  • HashSet
  • LinkedHashSet
  • TreeSet
  • Queue
  • Map
  • HashMap
  • LinkedHashMap
  • SortedMap
  • TreeMap
  • ConcurrentHashMap
  • HahsTable

【集合List系列一】集合概述_数组_02

2.说说 List,Map,Set?

  • List,主要是为顺序存储诞生的,List 接口是为了存储一组不唯一的(允许重复)有序的对象。
  • Set,主要特性是不允许重复的集合。对象存储不可重复性,且无序。
  • Map,主要特征是 Key-value。Map 会维护与 Key 对应的值。

Collection

【集合List系列一】集合概述_散列表_03

3.set 的类继承结构?

【集合List系列一】集合概述_散列表_04

4.set 集合的特点?

在 Java 中,Set 是一种集合类型,它继承自 Collection 接口,表示一组不重复的元素集合。Set 中的元素没有顺序,也没有索引,因此不能通过索引来访问 Set 中的元素。Set 中的元素可以是任意类型,包括基本类型和对象类型。

Set 集合的主要特点如下:

  1. 不允许重复元素:Set 集合中的元素是不重复的,每个元素只会出现一次。当向 Set 集合中添加一个已经存在的元素时,添加操作会失败并返回 false。
  2. 无序性:Set 集合中的元素是无序的,即没有顺序,不能通过索引来访问 Set 中的元素。
  3. 元素可以为 null:Set 集合中的元素可以为 null,但是如果 Set 集合中已经存在 null 元素,再次添加 null 元素时会失败并返回 false。
  4. 遍历元素:可以使用迭代器(Iterator)或增强型 for 循环来遍历 Set 集合中的元素。

常见的 Set 集合实现类有 HashSet、TreeSet 和 LinkedHashSet。其中,HashSet 是最常用的 Set 集合实现类,它基于散列表实现,具有快速的查找和插入性能;TreeSet 是基于红黑树实现,可以对元素进行排序;LinkedHashSet 是基于散列表和链表实现的,具有插入顺序和快速查找的特点。选择不同的 Set 集合实现类,可以根据实际需求来选择最适合的集合类型。

5.常见的 set 集合?

HashSet 和 TreeSet 都是基于 Set 的实现类。其中 TreeSet 是 Set 接口的子接口 SortedSet 接口的实现类。

  • SortedSet
  • TreeSet
  • HashSet
  • LinkedHashSet

6.Arrays.copyOf()

Arrays.copyOf和System.arraycopy的区别:

//Arrays.copyOf
public static <T> T[] copyOf(T[] original, int newLength) {
      return (T[]) copyOf(original, newLength, original.getClass());
}
//System.arraycopy
public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

都是用于数组复制的方法,但它们有一些不同之处。

Arrays.copyOf(original, newLength):

  • Arrays.copyOf()java.util.Arrays 类的一个静态方法,用于将一个数组复制到一个新的数组,并指定新数组的长度。
  • 参数 value 是源数组,参数 newCapacity 是新数组的长度。
  • 如果新数组长度小于源数组长度,则只复制前 newCapacity 个元素,多余的元素将被截断。
  • 如果新数组长度大于源数组长度,则新数组后面的元素将用默认值填充(如 0 对于数值类型、null 对于引用类型)。
  • 返回一个新的数组,如果 value 是基本数据类型数组,返回新数组的类型是相同的;如果 value 是引用类型数组,返回新数组的类型也是相同的。

System.arraycopy(src, srcPos, dest, destPos, length):

  • System.arraycopy()java.lang.System 类的一个静态方法,用于将一个数组的一部分复制到另一个数组的指定位置。
  • 参数 src 是源数组,参数 srcPos 是源数组开始位置的索引,参数 dest 是目标数组,参数 destPos 是目标数组开始位置的索引,参数 length 是复制的长度。
  • 这个方法会将 src 中从 srcPos 复制length长度个元素到 dest 中从 destPos 开始的位置。
  • 注意,这个方法并不会创建新的数组,它只是在已有的目标数组 dest 中进行复制。因此,目标数组 dest 的长度必须足够容纳复制的元素。

总结:

  • Arrays.copyOf() 用于创建一个新的数组,并将源数组的内容复制到新数组中。可以指定新数组的长度,多余部分填充默认值。
  • System.arraycopy() 用于将源数组的一部分内容复制到目标数组的指定位置,不会创建新的数组,只是在目标数组中进行复制。要确保目标数组足够大以容纳复制的元素。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

【集合List系列一】集合概述_散列表_05