单列集合

LinkedList

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 getremove  insert 元素提供了统一的命名方法。


 Set集合

一个不包含重复元素 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1  e2,并且最多包含一个 null 元素。

Set中的常见实现类有两个:

HashSetLinkedHashSet

 

HashSet类实现 Set 接口,由哈希表支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素

 LinkedHashSetHashset的基础上,可以保证存进去的顺序与取出来的顺序一致;

Set集合的特点:

1、只能存一个null元素

2、不能存重复的元素(会自动去除重复的元素)

3、不保证存进去的顺序与取出来的顺序一致;

List集合的特点:

1、可以存多个null元素

2、能存重复的元素

3、能保证存进去的顺序与取出来的顺序一致;

元素唯一性的判断规则

先使用参数对象调用hashCode方法,得到参数对象的hash值,使用hash值与集合中原有对象的hash值,做比较;

如果这两个对象的hash值,不相等,直接认为这两个对象不相等;(性能提升了)

  如果这两个对象的hash值,相等,会继续使用参数对象调用equals方法,再次与集合中的原有对象做比较;

  如果此时equals方法得出true,会认为两个对象相等;

  如果此时equals方法得出false,会认为两个对象不相等;

 

结论:

在自定义的类中,需要重写Object类中的HashCode方法和equals方法即可;

 

Object类中的HashCode方法,是根据对象的地址值生成对象的hash值;

自定义的类中重写HashCode方法后,是根据对象的属性值生成对象的hash值;

 

Object类中的equals方法默认是比较地址值

自定义的类中重写equals方法后,是比较对象的属性值;


ist与Set集合的区别?

List:

它是一个有序的集合(元素存与取的顺序相同)

它可以存储重复的元素

Set:

它是一个无序的集合(元素存与取的顺序可能不同)

它不能存储重复的元素



HashSet:

元素唯一不能重复

底层结构是 哈希表结构

元素的存与取的顺序不能保证一致

如何保证元素的唯一的?

重写hashCode() equals()方法

LinkedHashSet:

元素唯一不能重复

底层结构是 哈希表结构 + 链表结构

元素的存与取的顺序一致






单列集合(Single Column Collection)是指在 Java 集合框架中用于存储和操作一组对象的接口和类。这些集合通常用于处理单列数据,即每个元素是一个单独的对象,而不是键值对形式的双列数据。`Collection` 接口单列集合的核心接口,它定义了通用的操作方法,如添加、删除、遍历等 [^1]。 ### 单列集合的定义 单列集合的核心是 `Collection` 接口,它是整个集合框架的基础。`Collection` 接口及其子接口(如 `List`、`Set` 和 `Queue`)定义了如何存储、操作和检索一组对象。这些接口的实现类(如 `ArrayList`、`HashSet` 和 `LinkedList`)提供了具体的功能实现 [^2]。 - **List**:有序且允许重复元素的集合。常见的实现类有 `ArrayList`、`LinkedList` 和 `Vector`。 - **Set**:无序且不允许重复元素的集合。常见的实现类有 `HashSet`、`TreeSet` 和 `LinkedHashSet`。 - **Queue**:用于实现队列的数据结构,通常用于处理先进先出(FIFO)的操作。常见的实现类有 `LinkedList` 和 `PriorityQueue`。 ### 示例 以下是一些常见的单列集合示例: #### List 集合示例 ```java import java.util.ArrayList; import java.util.List; public class ListExample { public static void main(String[] args) { // 创建一个ArrayList List<String> list = new ArrayList<>(); // 添加元素 list.add("Apple"); list.add("Banana"); list.add("Orange"); // 遍历List集合 for (String fruit : list) { System.out.println(fruit); } } } ``` #### Set 集合示例 ```java import java.util.HashSet; import java.util.Set; public class SetExample { public static void main(String[] args) { // 创建一个HashSet Set<String> set = new HashSet<>(); // 添加元素 set.add("Apple"); set.add("Banana"); set.add("Orange"); // 遍历Set集合 for (String fruit : set) { System.out.println(fruit); } } } ``` #### Queue 集合示例 ```java import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { // 创建一个LinkedList作为Queue Queue<String> queue = new LinkedList<>(); // 添加元素 queue.offer("Apple"); queue.offer("Banana"); queue.offer("Orange"); // 遍历Queue集合并移除元素 while (!queue.isEmpty()) { System.out.println(queue.poll()); } } } ``` ### 遍历方式 单列集合可以通过多种方式进行遍历: - **迭代器遍历**:使用 `Iterator` 接口进行遍历。 - **增强 for 循环**:使用 Java 的增强 for 循环进行遍历。 - **Lambda 表达式**:使用 Lambda 表达式进行遍历。 #### 迭代器遍历示例 ```java import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { Collection<String> collection = new ArrayList<>(); collection.add("Apple"); collection.add("Banana"); collection.add("Orange"); // 使用迭代器遍历集合 Iterator<String> iterator = collection.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } } ``` #### 增强 for 循环遍历示例 ```java import java.util.ArrayList; import java.util.Collection; public class EnhancedForLoopExample { public static void main(String[] args) { Collection<String> collection = new ArrayList<>(); collection.add("Apple"); collection.add("Banana"); collection.add("Orange"); // 使用增强for循环遍历集合 for (String fruit : collection) { System.out.println(fruit); } } } ``` #### Lambda 表达式遍历示例 ```java import java.util.ArrayList; import java.util.Collection; public class LambdaExample { public static void main(String[] args) { Collection<String> collection = new ArrayList<>(); collection.add("Apple"); collection.add("Banana"); collection.add("Orange"); // 使用Lambda表达式遍历集合 collection.forEach(fruit -> System.out.println(fruit)); } } ``` ### 总结 单列集合是 Java 集合框架中的重要组成部分,提供了灵活的方式来存储和操作一组对象。通过 `Collection` 接口及其子接口(如 `List`、`Set` 和 `Queue`),开发者可以根据具体需求选择合适的集合类型和实现类 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值