Java Set取值

Java Set取值

Java Set取值

1. 什么是Set

在Java中,Set是一种集合数据结构,它存储一组唯一的元素,不允许重复。Set接口继承自Collection接口,并在其基础上添加了对唯一性元素的限制。Set没有定义对元素的索引和位置,因此没有提供类似于List和Array的随机访问功能。

Set接口有多个实现类,常用的有HashSet、LinkedHashSet和TreeSet,它们都实现了Set接口并提供了不同的特性和性能。在使用Set时,可以根据实际需求选择适合的实现类。

2. HashSet

HashSet是基于哈希表实现的Set。它不保证元素的顺序,不允许重复元素,并允许使用null作为元素。

2.1 添加元素

使用add()方法向HashSet中添加元素,如果元素已存在,则不会添加,并返回false。示例代码如下:

import java.util.HashSet;

public class HashSetExample {
   public static void main(String[] args) {
      HashSet<String> set = new HashSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      System.out.println(set); // 输出:[Apple, Banana, Orange]

      boolean result = set.add("Apple");
      System.out.println(result); // 输出:false
   }
}
Java

运行结果:

[Apple, Banana, Orange]
false

从运行结果可以看出,添加重复元素”Apple”时,返回结果为false,并且HashSet中只保留一个”Apple”元素。

2.2 删除元素

HashSet提供了remove()方法来删除指定的元素,如果元素存在,则删除成功并返回true;如果元素不存在,则返回false。示例代码如下:

import java.util.HashSet;

public class HashSetExample {
   public static void main(String[] args) {
      HashSet<String> set = new HashSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      System.out.println(set); // 输出:[Apple, Banana, Orange]

      boolean result = set.remove("Banana");
      System.out.println(result); // 输出:true

      System.out.println(set); // 输出:[Apple, Orange]
   }
}
Java

运行结果:

[Apple, Banana, Orange]
true
[Apple, Orange]

从运行结果可以看出,成功删除”Banana”元素后,HashSet中只剩下”Apple”和”Orange”两个元素。

2.3 遍历元素

HashSet不能直接使用下标来访问元素,但可以通过迭代器或增强for循环来遍历元素。示例代码如下:

import java.util.HashSet;
import java.util.Iterator;

public class HashSetExample {
   public static void main(String[] args) {
      HashSet<String> set = new HashSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      // 使用迭代器遍历元素
      Iterator<String> iterator = set.iterator();
      while (iterator.hasNext()) {
         String element = iterator.next();
         System.out.println(element);
      }

      // 使用增强for循环遍历元素
      for (String element : set) {
         System.out.println(element);
      }
   }
}
Java

运行结果:

Apple
Banana
Orange
Apple
Banana
Orange

从运行结果可以看出,HashSet的元素并没有固定顺序,使用迭代器和增强for循环遍历元素时,元素的顺序可能不同。

3. LinkedHashSet

LinkedHashSet是基于链表和哈希表实现的Set。它可以保留元素的顺序,不允许重复元素,并允许使用null作为元素。

3.1 添加元素

使用add()方法向LinkedHashSet中添加元素,如果元素已存在,则不会添加,并返回false。示例代码如下:

import java.util.LinkedHashSet;

public class LinkedHashSetExample {
   public static void main(String[] args) {
      LinkedHashSet<String> set = new LinkedHashSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      System.out.println(set); // 输出:[Apple, Banana, Orange]

      boolean result = set.add("Apple");
      System.out.println(result); // 输出:false
   }
}
Java

运行结果:

[Apple, Banana, Orange]
false

从运行结果可以看出,添加重复元素”Apple”时,返回结果为false,并且LinkedHashSet中只保留一个”Apple”元素。

3.2 删除元素

LinkedHashSet提供了remove()方法来删除指定的元素,如果元素存在,则删除成功并返回true;如果元素不存在,则返回false。示例代码如下:

import java.util.LinkedHashSet;

public class LinkedHashSetExample {
   public static void main(String[] args) {
      LinkedHashSet<String> set = new LinkedHashSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      System.out.println(set); // 输出:[Apple, Banana, Orange]

      boolean result = set.remove("Banana");
      System.out.println(result); // 输出:true

      System.out.println(set); // 输出:[Apple, Orange]
   }
}
Java

运行结果:

[Apple, Banana, Orange]
true
[Apple, Orange]

从运行结果可以看出,成功删除”Banana”元素后,LinkedHashSet中只剩下”Apple”和”Orange”两个元素。

3.3 遍历元素

LinkedHashSet可以保留元素的顺序,可以通过迭代器或增强for循环来遍历元素。示例代码如下:

import java.util.LinkedHashSet;
import java.util.Iterator;

public class LinkedHashSetExample {
   public static void main(String[] args) {
      LinkedHashSet<String> set = new LinkedHashSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      // 使用迭代器遍历元素
      Iterator<String> iterator = set.iterator();
      while (iterator.hasNext()) {
         String element = iterator.next();
         System.out.println(element);
      }

      // 使用增强for循环遍历元素
      for (String element : set) {
         System.out.println(element);
      }
   }
}
Java

运行结果:

Apple
Banana
Orange
Apple
Banana
Orange

从运行结果可以看出,LinkedHashSet可以保留元素的顺序,使用迭代器和增强for循环遍历元素时,元素的顺序与添加顺序相同。

4. TreeSet

TreeSet是基于红黑树实现的Set。它可以对元素进行排序,并且不允许重复元素。

4.1 添加元素

使用add()方法向TreeSet中添加元素,如果元素已存在,则不会添加,并返回false。示例代码如下:

import java.util.TreeSet;

public class TreeSetExample {
   public static void main(String[] args) {
      TreeSet<String> set = new TreeSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      System.out.println(set); // 输出:[Apple, Banana, Orange]

      boolean result = set.add("Apple");
      System.out.println(result); // 输出:false
   }
}
Java

运行结果:

[Apple, Banana, Orange]
false

从运行结果可以看出,添加重复元素”Apple”时,返回结果为false,并且TreeSet中只保留一个”Apple”元素。

4.2 删除元素

TreeSet提供了remove()方法来删除指定的元素,如果元素存在,则删除成功并返回true;如果元素不存在,则返回false。示例代码如下:

import java.util.TreeSet;

public class TreeSetExample {
   public static void main(String[] args) {
      TreeSet<String> set = new TreeSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      System.out.println(set); // 输出:[Apple, Banana, Orange]

      boolean result = set.remove("Banana");
      System.out.println(result); // 输出:true

      System.out.println(set); // 输出:[Apple, Orange]
   }
}
Java

运行结果:

[Apple, Banana, Orange]
true
[Apple, Orange]

从运行结果可以看出,成功删除”Banana”元素后,TreeSet中只剩下”Apple”和”Orange”两个元素。

4.3 遍历元素

TreeSet可以对元素进行排序,可以通过迭代器或增强for循环来遍历元素。示例代码如下:

import java.util.TreeSet;
import java.util.Iterator;

public class TreeSetExample {
   public static void main(String[] args) {
      TreeSet<String> set = new TreeSet<>();

      set.add("Apple");
      set.add("Banana");
      set.add("Orange");

      // 使用迭代器遍历元素
      Iterator<String> iterator = set.iterator();
      while (iterator.hasNext()) {
         String element = iterator.next();
         System.out.println(element);
      }

      // 使用增强for循环遍历元素
      for (String element : set) {
         System.out.println(element);
      }
   }
}
Java

运行结果:

Apple
Banana
Orange
Apple
Banana
Orange

从运行结果可以看出,TreeSet对元素进行了排序,默认按照自然顺序进行排序。使用迭代器和增强for循环遍历元素时,元素按照排序顺序输出。

5. 总结

Set是一种存储唯一元素的集合数据结构,Java提供了多个实现类来满足不同需求。HashSet基于哈希表实现,不保证元素顺序;LinkedHashSet基于链表和哈希表实现,保留元素顺序;TreeSet基于红黑树实现,对元素进行排序。通过了解和使用这些Set的实现类,可以在实际开发中灵活应用,提高效率和代码质量。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册