集合-01
一.概述
1.Java 中容器有哪些?
java 容器主要有 Collection 和 Map 两大类,还有他们的子类和实现类
2.说说 List 和 Map 和 Set?
-
List,主要是为顺序存储诞生的,List 接口是为了存储一组不唯一的(允许重复)有序的对象。
-
Set,主要特性是不允许重复的集合。对象存储不可重复性,且无序。
-
Map,主要特征是 Key-value。Map 会维护与 Key 对应的值。
Collection
3.set 的类继承结构?
4.set 集合的特点?
在 Java 中,Set 是一种集合类型,它继承自 Collection 接口,表示一组不重复的元素集合。Set 中的元素没有顺序,也没有索引,因此不能通过索引来访问 Set 中的元素。Set 中的元素可以是任意类型,包括基本类型和对象类型。
Set 集合的主要特点如下:
- 不允许重复元素:Set 集合中的元素是不重复的,每个元素只会出现一次。当向 Set 集合中添加一个已经存在的元素时,添加操作会失败并返回 false。
- 无序性:Set 集合中的元素是无序的,即没有顺序,不能通过索引来访问 Set 中的元素。
- 元素可以为 null:Set 集合中的元素可以为 null,但是如果 Set 集合中已经存在 null 元素,再次添加 null 元素时会失败并返回 false。
- 遍历元素:可以使用迭代器(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()
用于将源数组的一部分内容复制到目标数组的指定位置,不会创建新的数组,只是在目标数组中进行复制。要确保目标数组足够大以容纳复制的元素。
- 点赞
- 收藏
- 关注作者
评论(0)