Java TreeSet的特殊方法

Java TreeSet的特殊方法

TreeSet是Java中使用Tree进行存储的SortedSet接口的最重要实现之一。TreeSet通过继承AbstractSet类实现了一个NavigableSet接口。这意味着存储在TreeSet中的元素是有序的,也就是按升序排列。由于TreeSet的这一特性,除了传统上由Collection接口提供的方法外,它还提供了NavigableSet接口的某些惊人的方法。

注意: 由于TreeSet是Set的实现,因此它不允许元素的重复。

TreeSet提供的一些具体方法如下。

  1. floor()方法
  2. lower()方法
  3. ceiling() 方法
    1. higher() 方法
    2. subSet() “方法
    3. headSet() 方法
    4. tailSet() 方法

现在让我们讨论一下所有的方法以及它们的实现,如下所示

方法 1: floor() 方法

该方法返回集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回空。

参数: 需要搜索一个小于或等于数值的数字

语法:

treeSetObject.floor(argument) ;

示例:

// Java Program to demonstrate Floor Method in TreeSet
 
// Importing input output classes
import java.io.*;
// Importing TreeSet and Set classes from java.util package
import java.util.Set;
import java.util.TreeSet;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println("Tree set = " + treeSet);
 
        // Case 1
 
        // Using floor() method over treeSet elements but
        // note floor() method is inclusive of the limit
        // Hence maximum element is returned
        System.out.println("floor(60) = "
                           + treeSet.floor(60));
 
        // Case 2
 
        // Using floor() method over treeSet elements,
        // therefore output of the below line will be the
        // number itself
        System.out.println("floor(54) = "
                           + treeSet.floor(54));
    }
}

输出

Tree set = [12, 37, 54, 68, 98]
floor(60) = 54
floor(54) = 54

方法 2: lower() 方法

该方法返回这个集合中严格小于给定元素的最大元素,如果没有这样的元素,则返回空。

参数: 需要找到其小于值的数字。

语法:

treeSetObject.lower(argument) ;

示例:

// Java Program to demonstrate Lower Method in TreeSet
 
// Importing input output classes
import java.io.*;
// Importing TreeSet and Set classes from java.util package
import java.util.Set;
import java.util.TreeSet;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println(treeSet);
 
        // Case 1
        // Using lower() method over treeSet elements where
        // argument passed is greater then max element in
        // TreeSet therefore returning max element itself
        System.out.println("lower(90) = "
                           + treeSet.lower(90));
 
        // Case 2
        // Using lower() method over treeSet elements where
        // argument passed is not greater then max element
        // in TreeSet therefore returning element lesser
        // than that passed as an argument
        System.out.println("lower(68) = "
                           + treeSet.lower(68));
 
        // Also note that lower() method is exclusive of the
        // limit
    }
}

输出

[12, 37, 54, 68, 98]
lower(90) = 68
lower(68) = 54

方法 3: ceiling() 方法

该方法返回这个集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回空。

Argument: 需要找到小于或等于其值的数字。

语法:

treeSetObject.lower(argument) ;

示例:

// Java Program to demonstrate Ceiling Method in TreeSet
// Importing input output classes
import java.io.*;
// Importing TreeSet and Set classes from java.util package
import java.util.Set;
import java.util.TreeSet;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println("tree set = " + treeSet);
 
        // Using ceiling() method.
        System.out.println("ceiling(50) = "
                           + treeSet.ceiling(50));
 
        // Note that ceiling method is inclusive of the
        // limit. Therefore,output of the below line will be
        // the same number.
        System.out.println("ceiling(68) = "
                           + treeSet.ceiling(68));
 
        // Verification for null
        System.out.println("ceiling(100) = "
                           + treeSet.ceiling(100));
    }
}

输出

tree set = [12, 37, 54, 68, 98]
ceiling(50) = 54
ceiling(68) = 68
ceiling(100) = null

方法 4: higher()方法

这个方法返回这个集合中严格大于给定元素的最小元素,如果没有这样的元素,则返回空。

参数: 需要找到其小于值的数字。

语法:

treeSetObject.lower(argument) ;

示例:

// Java Program to demonstrate Higher Method of TreeSet
 
// Importing input output classes
import java.io.*;
// Importing Set and TreeSet classes from java.util package
import java.util.Set;
import java.util.TreeSet;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println("tree set = " + treeSet);
 
        // Using higher() method
 
        // Case 1
        System.out.println("higher(50) = "
                           + treeSet.higher(50));
 
        // Case 2
        // Note that higher method is exclusive of the limit
        // causing
        //  output be the number greater than the number
        //  passed
        System.out.println("higher(68) = "
                           + treeSet.higher(68));
 
        // Case 3
        // Verification for null
        System.out.println("higher(98) = "
                           + treeSet.higher(100));
    }
}

输出

tree set = [12, 37, 54, 68, 98]
higher(50) = 54
higher(68) = 98
higher(98) = null

方法 5: subSet() 方法

这个方法将返回从fromElementtoElement的元素。

注意 : ‘fromElement’是包容的,’toElement’是排斥的。

语法:

treeSetObject.subSet(fromElement, toElement);
// where fromElement is the lower limit (inclusive) and 
// toElement is the upper limit (exclusive) 
// of the set containing values between these limits

示例:

// Java Program to demonstrate subset Method in TreeSet
 
// Importing input output classes
import java.io.*;
// Importing Set and TreeSet classes from java.util package
import java.util.Set;
import java.util.TreeSet;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println("tree set = " + treeSet);
 
        // Using subSet() method
 
        // Case 1
        System.out.println(
            "Elements between 54 and 98 are : "
            + treeSet.subSet(54, 98));
 
        // Case 2
        // If we want to include the upper limit
        System.out.println(
            "Elements between 54 and 98 including both the limits : "
            + treeSet.subSet(54, true, 98, true));
 
        // Case 3
        // If we want to exclude the lower limit
        System.out.println(
            "Elements between 54 (exclusive) and 98 (inclusive) : "
            + treeSet.subSet(54, false, 98, true));
 
        // Case 4
        // If we want to exclude both the limits
        System.out.println(
            "Elements between 54 (exclusive) and 98 (exclusive) : "
            + treeSet.subSet(54, false, 98, false));
    }
}

输出

tree set = [12, 37, 54, 68, 98]
Elements between 54 and 98 are : [54, 68]
Elements between 54 and 98 including both the limits : [54, 68, 98]
Elements between 54 (exclusive) and 98 (inclusive) : [68, 98]
Elements between 54 (exclusive) and 98 (exclusive) : [68]

方法 6: headSet() 方法

此方法将返回TreeSet中小于指定元素的元素。

语法:

treeSetObject.headSet(upToNumber) ;

注意:upToNumber ‘ 是要找到的数字的上限(排他性)。

示例:

// Java Program to demonstrate headSet Method in TreeSet
 
// Importing input output classes
import java.io.*;
// Importing Set and TreeSet classes from java.util package
import java.util.Set;
import java.util.TreeSet;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println("tree set = " + treeSet);
 
        // Implementing headSet() method via TreeSet object
 
        // Case 1
        System.out.println("Elements upto 90 : "
                           + treeSet.headSet(90));
 
        // Case 2
        // The function limit is exclusive of the argument
        // passed
        System.out.println("Elements upto 68 : "
                           + treeSet.headSet(68));
 
        // Case 3
        // If we want to include the number passed, then
        System.out.println("Elements upto 68 (inclusive) : "
                           + treeSet.headSet(68, true));
    }
}

输出

tree set = [12, 37, 54, 68, 98]
Elements upto 90 : [12, 37, 54, 68]
Elements upto 68 : [12, 37, 54]
Elements upto 68 (inclusive) : [12, 37, 54, 68]

方法 7:

此方法将返回TreeSet中大于或等于指定元素的元素。

语法:

treeSetObject.tailSet(aboveThisNumber) ;

注意:aboveThisNumber'是要找到的数字的下限(包括在内)。

示例:

// Java Program to demonstrate tailSet Method in TreeSet
 
// Importing input output classes
import java.io.*;
import java.util.Set;
import java.util.TreeSet;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of TreeSet of Integer type
        // Initializing object with integer values using
        // Set.of() method
        TreeSet<Integer> treeSet
            = new TreeSet<>(Set.of(12, 98, 54, 37, 68));
 
        // Print and display elements in object
        System.out.println("tree set = " + treeSet);
 
        // Implementing tailSet()
 
        // Case 1
        System.out.println("Elements above 50 : "
                           + treeSet.tailSet(50));
 
        // Case 2
        // The function limit is inclusive of the argument
        // passed
        System.out.println("Elements above 54 : "
                           + treeSet.tailSet(54));
 
        // Case 3
        // If we want to exclude the number passed
        System.out.println(
            "Elements above 54 (exclusive) : "
            + treeSet.tailSet(54, false));
    }
}

输出

tree set = [12, 37, 54, 68, 98]
Elements above 50 : [54, 68, 98]
Elements above 54 : [54, 68, 98]
Elements above 54 (exclusive) : [68, 98]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程