Java 如何循环使用TreeSet

Java 如何循环使用TreeSet

TreeSet是Java中SortedSet接口的最重要的实现之一,它使用Tree来存储。无论是否提供显式比较器,元素的排序都是由一个集合使用其自然排序来维护的。如果要正确地实现Set接口,这必须与equals一致。

现在的任务是探索出有多少种方法可以在TreeSet上循环。我们都知道TreeSet提供了对SortedSet接口的实现,SortedSet扩展了Set接口。它的行为就像一个简单的集合,不同的是它以排序的方式存储元素。

如何在Java中循环使用TreeSet?

下面是与TreeSet相关的一些特性,具体如下。

  • TreeSet使用树形数据结构进行存储。
  • 对象是以排序后的升序存储的。但是我们可以使用TreeSet.descendingIterator()方法进行降序迭代。
  • 访问和检索时间非常快,这使得TreeSet成为以排序格式存储大量数据的最佳选择。
  • TreeSet不使用hashCode()和equals()方法来比较它的元素。它使用compare()(或compareTo())方法来确定两个元素是否相等。

方法

下面我们列出了在java中迭代TreeSet的各种方法,我们将进一步讨论这些方法,并将为以下每个方法提供一个干净的java程序。

  1. 使用增强型For循环
  2. 使用迭代器
  3. 使用流(从Java8开始)。

方法1: 使用增强型For循环

增强型For循环可以用来在TreeSet上以下面的方式进行循环。

语法

for (Integer value : ts)
{
    System.out.print(value);
}

例子

// Java Program to Loop over TreeSet
// Using Enhanced For loop
  
// Importing required classes 
import java.util.Iterator;
import java.util.TreeSet;
  
// Main class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an empty TreeSet by
        // declaring object of TreeSet class of Integer type
        TreeSet<Integer> ts = new TreeSet<Integer>();
  
        // Adding elements to above TreeSet object
        ts.add(10);
        ts.add(61);
        ts.add(87);
        ts.add(39);
  
        // Display message for better readability
        System.out.print("TreeSet: ");
  
        // Looping over the TreeSet values
        for (Integer value : ts)
  
            // Print the values
            System.out.print(value + ", ");
        
        System.out.println();
    }
}

输出

TreeSet: 10, 39, 61, 87, 

方法2: 使用Iterator

迭代器可以在TreeSet对象上创建。因此,这个迭代器可以用来遍历或循环TreeSet。

语法

Iterator iterator = ts.iterator();

while (iterator.hasNext())
{
System.out.print(iterator.next());
}

例子

// Java program to loop over TreeSet
// Using Iterator
  
// Importing required classes
import java.util.Iterator;
import java.util.TreeSet;
  
// Main class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an empty TreeSet by
        // declaring an object of TreeSet class
        TreeSet<Integer> ts = new TreeSet<Integer>();
  
        // Adding elements to above object of TreeSet class
        // Using add() method
        ts.add(10);
        ts.add(61);
        ts.add(87);
        ts.add(39);
  
        // Create an Iterator over the TreeSet
        Iterator<Integer> iterator = ts.iterator();
  
        // Display message for better readability
        System.out.print("TreeSet: ");
  
        // Looping over the TreeSet values
        while (iterator.hasNext())
  
            // Print all the values inside TreeSet object
            System.out.print(iterator.next() + ", ");
  
        System.out.println();
    }
}

方法3:使用Java 8 forEach/stream

Java 8 forEach / stream可用于以下列方式在TreeSet上循环。

语法

Tree_Set.forEach(iterator -> System.out.print(i + " "));
// Using forEach 
Tree_Set.stream().map(iterator -> String.valueOf(i)).collect(Collectors.joining(", "))
// Using stream  

例子

// Java program to loop over TreeSet
// Using For-each and Stream in Java8
  
// Importing required classes
import java.util.Arrays;
import java.util.Iterator;
import java.util.TreeSet;
import java.util.stream.Collectors;
  
// Main class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an empty TreeSet if integer type
        TreeSet<Integer> ts = new TreeSet<Integer>();
  
        // Adding elements to the TreeSet
        // using addAll() method
        ts.addAll(Arrays.asList(10, 61, 87, 39));
  
        // Looping over the TreeSet & print values
        System.out.print("TreeSet without Comma: ");
  
        // Iterating through the TreeSet
        // using forEach
        ts.forEach(i -> System.out.print(i + " "));
        System.out.println();
  
        // Looping over the TreeSet & print values
        System.out.print("TreeSet with Comma: ");
  
        // Iterating through the TreeSet
        // Using stream concept introduced in Java8
        System.out.print(
            ts.stream()
                .map(i -> String.valueOf(i))
                .collect(Collectors.joining(", ")));
    }
}

输出

TreeSet without Comma: 10 39 61 87 
TreeSet with Comma: 10, 39, 61, 87

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程