Java 集 - Java 中的集

Java Set is a collection of elements (Or objects) that contains no duplicate elements. Java Set is an interface that extends Collection interface. Unlike List, Java Set is NOT an ordered collection, it's elements does NOT have a particular order. Java Set does NOT provide a control over the position where you can insert an element. You cannot access elements by their index and also search elements in the list.

Java 设置

在本节中,我们将讨论有关Java Set的一些重要问题:

  • Java Set 界面是 Java Collections Framework 的成员
  • 与列表不同,Set DOES NOT 允许您添加重复元素
  • Set 允许您添加最多一个 null 元素
  • Set 界面在 Java 8 中有一个默认方法: Spliterator
  • 与 List 和 Array 不同,Set 不能支持其元素的索引或位置
  • Set 支持 Generics,我们应该随时使用它。

Java 设置类图表

Java Set interface extends Collection interface. Collection interface extends Iterable interface. Some of the frequently used Set implementation classes are HashSet, LinkedHashSet, TreeSet, CopyOnWriteArraySet and ConcurrentSkipListSet. AbstractSet provides a skeletal implementation of the Set interface to reduce the effort in implementing Set.

Java 定义方法

在本节中,我们将讨论一些有用的Java Set方法:

  1. int 大小 (): 获取 Set.
  2. boolean isEmpty (): 检查Set是否为空 () )3. 布林包含(对象o):如果本集包含指定的元素则返回为真. () (英语). 4. 迭接器 : 返回此集元素的浏览器 。 元素不按特定顺序返回. 5。 对象[]到箭头 (): 返回包含本集所有元素的数组 。 如果此套集对其执行者返回其元素的顺序提供了任何保证,则该方法必须以相同的顺序返回元素.
  3. 布尔加法(E): 将指定的元素添加到此集中, 如果它尚未存在( 可选操作) 。 (_)
  4. 布尔去除( 对象 o) : 如果选中的话, 从此设定中删除指定的元素 。 () )8. 布尔去除 All( Collection c) : 从此集中删除指定收藏中包含的所有元素( 可选操作) 。 () )9. 布尔保留All(Collection c) : 仅保留此集合中包含在指定收藏( 可选操作) 的元素 。
  5. 空白清晰 (): 从集中删除全部元素. 11。 迭接器 : 返回此集元素的浏览器 。 (_) (英语)

Java Array 要设置

与列表不同,我们不能直接将Java 组合转换为数组,因为它不是使用数组实现的,所以我们不能使用 Arrays 类来获得数组视图作为组合,我们可以遵循另一种方法。我们可以使用 Arrays.asList() 方法将一个数组转换为列表,然后使用它来创建一个数组。

 1import java.util.*;
 2
 3public class ArrayToSet {
 4   public static void main(String[] args) {
 5    	
 6    String[] vowels = {"a","e","i","o","u"};
 7    	
 8    Set<String> vowelsSet = new HashSet>(Arrays.asList(vowels));
 9    System.out.println(vowelsSet);
10    
11    /**
12     * Unlike List, Set is NOt backed by array, 
13     * so we can do structural modification without any issues.
14     */
15    vowelsSet.remove("e");
16    System.out.println(vowelsSet);
17    vowelsSet.clear();
18    System.out.println(vowelsSet);
19   }
20}

** 方法-2** 在此方法中,我们不会使用中间列表来创建从一个数组的集合. 首先创建一个空的HashSet,然后使用 Collections.addAll()将数组元素复制到给定的集合,如下所示。

 1import java.util.*;
 2
 3public class ArrayToSet2 {
 4   public static void main(String[] args) {
 5    	
 6    String[] vowels = {"a","e","i","o","u"};
 7    	
 8    Set<String> vowelsSet = new HashSet<>();
 9    Collections.addAll(vowelsSet, vowels); 
10    System.out.println(vowelsSet);
11
12    /** 
13     * Unlike List, Set is NOt backed by array, 
14     * so we can do structural modification without any issues.
15     */
16    vowelsSet.remove("e");
17    System.out.println(vowelsSet);
18    vowelsSet.clear();
19    System.out.println(vowelsSet);
20   }
21}

** 输出:-** 当我们运行两个程序以上时,我们将获得如下所示的相同的输出。

1[a, e, u, i, o]
2[a, u, i, o]
3[]

Java 设置到 Array

在本节中,我们将编写一个程序,用 Set.toArray() 方法将一组字符串转换为一组字符串,如下所示。

 1import java.util.*;
 2
 3public class SetToArray {
 4   public static void main(String[] args) {
 5    Set<String< vowelsSet = new HashSet<>();
 6
 7    // add example
 8    vowelsSet.add("a");
 9    vowelsSet.add("e");
10    vowelsSet.add("i");
11    vowelsSet.add("o");
12    vowelsSet.add("u");
13    	
14    //convert Set to Array
15    String strArray[] = vowelsSet.toArray(new String[vowelsSet.size()]);
16    System.out.println(Arrays.toString(strArray)); 
17   }
18}

**输出:-**当我们在程序上方运行时,我们将获得如下所示的以下输出。

1[a, e, u, i, o]

java 定位

正如我们所知道的,Set(HashSet)不支持直接排序元素,它以随机顺序存储和显示其元素,但我们有一些方法来排序其元素,如下所示:

 1import java.util.*;
 2
 3public class SetSortingExample {
 4
 5    public static void main(String[] args) {
 6    	Set<Integer> intsSet = new HashSet<>();
 7    	Random random = new Random();
 8    	for (int i = 0; i  {return (o2-o1);});
 9    	System.out.println("Reverse Sorting: " + intsList2);
10
11    	// Approach-3
12    	Set<Integer> sortedSet = new TreeSet<>(intsSet);
13    	System.out.println("Sorted Set: " + sortedSet);
14    }
15}

** 输出:-** 当我们在程序上方运行时,我们会看到以下输出。

1[560, 864, 176, 657, 135, 103, 40, 123, 555, 589]
2Natural Sorting: [40, 103, 123, 135, 176, 555, 560, 589, 657, 864]
3Before Sorting: [560, 864, 176, 657, 135, 103, 40, 123, 555, 589]
4Reverse Sorting: [864, 657, 589, 560, 555, 176, 135, 123, 103, 40]
5Sorted Set: [40, 103, 123, 135, 176, 555, 560, 589, 657, 864]

Java 设置常见操作

在Java Set中执行的最常见操作是添加、addAll、清晰、大小等,以下是一个简单的Java Set示例,展示了常见方法的使用。

 1import java.util.*;
 2
 3public class SetCommonOperations 
 4{
 5   public static void main(String args[]) 
 6   {
 7    Set<String> vowels= new HashSet<>();
 8    	
 9    //add example
10    vowels.add("A");
11    vowels.add("E");
12    vowels.add("I");
13
14    //We cannot insert elements based on index to a Set
15    System.out.println(vowels);
16    	
17    Set<String> set = new HashSet<>();
18    set.add("O");
19    set.add("U");
20    
21    //appending set elements to letters
22    vowels.addAll(set);
23    System.out.println(vowels);
24    
25    //clear example to empty the set
26    set.clear();
27    	
28    //size example
29    System.out.println("letters set size = " + vowels.size());
30    	
31    vowels.clear();
32    vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O");
33    System.out.println("Given set contains E element or not? = " + vowels.contains("E"));
34    	
35   }
36}

Output:-

1[A, E, I]
2[A, E, U, I, O]
3letters set size = 5
4Given set contains E element or not? = true

Java 设置 iterator

下面是一個簡單的例子,顯示如何在Java Set上重複。

 1import java.util.*;
 2
 3public class SetIteratorExample
 4{
 5   public static void main(String[] args) 
 6   {
 7
 8    Set<Integer> set = new HashSet<>();
 9    for(int i=0; i<5; i++) 
10    	set.add(i);
11    	
12    Iterator iterator = set.iterator();
13    
14    //simple iteration
15    while(iterator.hasNext()){
16    	int i = (int) iterator.next();
17    	System.out.print(i + ", ");
18    }
19    System.out.println("\n" + set);
20    
21    //modification of set using iterator
22    iterator = set.iterator();
23    while(iterator.hasNext()){
24    	int x = (int) iterator.next();
25    	if(x%2 ==0) iterator.remove();
26    }
27    System.out.println(set);
28    	
29    //changing set structure while iterating
30    iterator = set.iterator();
31    while(iterator.hasNext()){
32                //ConcurrentModificationException here
33    	int x = (int) iterator.next(); 
34    	if(x==1) set.add(10);
35    }
36   }
37}

Java 设置为流

下面是一個簡單的例子,顯示如何將Java Set轉換為流,並根據我們的要求執行一些操作。

 1import java.util.*;
 2
 3public class SetToStream {
 4
 5   public static void main(String[] args) {
 6    Set<String> vowelsSet = new HashSet<>();
 7    // add example
 8    vowelsSet.add("a");
 9    vowelsSet.add("e");
10    vowelsSet.add("i");
11    vowelsSet.add("o");
12    vowelsSet.add("u");
13    	
14    //convert set to stream
15    vowelsSet.stream().forEach(System.out::println);
16   }
17}

Output:-

1a
2e
3u
4i
5o

Java SE 9 套件

在Java SE 9的发布中,Oracle Corp将添加一些有用的实用方法来设置界面,最好用一些简单而有用的例子来理解它们,请通过我的教程(Java SE 9: Set Factory Methods)(/community/tutorials/javase9-factories-for-immutable-set)来学习它们,这就是Java中设置的快速圆形。我希望这些Java Set例子能帮助您开始编程。感谢您阅读我的教程,如果您喜欢我的教程或有任何问题或建议或任何类型的错误,请放下评论。

Published At
Categories with 技术
Tagged with
comments powered by Disqus