Java中的TreeSet

Java中的TreeSet

在Java中,我们通常使用集合来存储数据。集合框架是一个提供集合类(实现了集合接口)的统一架构,用于处理数据集合。它提供了通用的工具,如添加、删除和搜索等,使得开发人员能够轻松地管理和操作集合。其中,TreeSet是一个基于红黑树的实现,它可以对元素进行排序。本文将深入介绍Java中的TreeSet。

TreeSet概述

TreeSet是Java集合框架下的一个类,继承了AbstractSet类,实现了NavigableSet接口。它是一个有序的集合,底层是基于红黑树实现的。在TreeSet中,元素按照升序排列。允许添加null元素,但只能有一个。在集合的迭代中,所有的元素都是按照升序排列的。如果您要按照降序进行迭代,可以使用descendingIterator()方法。以下是一个示例:

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

public class TreeSetExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");

        Iterator<String> iterator = treeSet.iterator();
        while (iterator.hasNext()) {
            String animal = iterator.next();
            System.out.println(animal);
        }
    }
}

输出:

Cat
Lion
Tree
Zebra

从输出可以看出,TreeSet自动对插入的元素按照字母表顺序进行了排序。

TreeSet的构造函数

TreeSet有5个构造函数,具体如下:

TreeSet() 
TreeSet(Collection<? extends E> c) 
TreeSet(Comparator<? super E> comparator) 
TreeSet(SortedSet<E> s) 
TreeSet(E e) 

这些构造函数分别表示:

  • 创建一个空TreeSet。
  • 创建一个包含指定集合所有元素的TreeSet。
  • 创建使用指定比较器进行排序的TreeSet。
  • 创建一个包含指定SortedSet所有元素的TreeSet。
  • 创建一个只包含一个元素的TreeSet。

以下代码演示了三个构造函数的使用:

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

public class TreeSetConstructorExample {

    public static void main(String[] args) {
        // 创建一个空TreeSet
        TreeSet<String> treeSet1 = new TreeSet<String>();
        treeSet1.add("Zebra");
        treeSet1.add("Cat");
        treeSet1.add("Tree");
        treeSet1.add("Lion");
        System.out.println("treeSet1: " + treeSet1);

        // 创建一个包含指定集合所有元素的TreeSet
        TreeSet<String> treeSet2 = new TreeSet<String>();
        treeSet2.add("Elephant");
        treeSet2.add("Bear");
        treeSet2.add("Dog");
        TreeSet<String> treeSet3 = new TreeSet<String>(treeSet2);
        System.out.println("treeSet3: " + treeSet3);

        // 创建使用指定比较器进行排序的TreeSet
        TreeSet<String> treeSet4 = new TreeSet<String>((s1, s2) -> s1.length() - s2.length());
        treeSet4.add("Zebra");
        treeSet4.add("Cat");
        treeSet4.add("Tree");
        treeSet4.add("Lion");
        System.out.println("treeSet4: " + treeSet4);
    }
}

输出:

treeSet1: [Cat, Lion, Tree, Zebra]
treeSet3: [Bear, Dog, Elephant]
treeSet4: [Cat, Lion, Tree, Zebra]

TreeSet的常用操作

添加元素

使用TreeSet添加元素与使用Set添加元素是相似的,只需调用add()方法即可。以下是一个示例:

import java.util.TreeSet;

public class TreeSetAddExample {

    public static void main(String[] args) {
       TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);
    }
}

输出:

[Cat, Lion, Tree, Zebra]

删除元素

使用TreeSet删除元素与使用Set删除元素也是相似的,只需调用remove()方法即可。以下是一个示例:

import java.util.TreeSet;

public class TreeSetRemoveExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        treeSet.remove("Tree");
        System.out.println(treeSet);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
[Cat, Lion, Zebra]

获取并删除第一个元素

在TreeSet中,可以使用pollFirst()方法获取并删除第一个元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetPollFirstExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String first = treeSet.pollFirst();
        System.out.println(first);
        System.out.println(treeSet);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Cat
[Lion, Tree, Zebra]

获取并删除最后一个元素

在TreeSet中,可以使用pollLast()方法获取并删除最后一个元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetPollLastExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String last = treeSet.pollLast();
        System.out.println(last);
        System.out.println(treeSet);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Zebra
[Cat, Lion, Tree]

获取第一个元素

在TreeSet中,可以使用first()方法获取第一个元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetFirstExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String first = treeSet.first();
        System.out.println(first);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Cat

获取最后一个元素

在TreeSet中,可以使用last()方法获取最后一个元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetLastExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String last = treeSet.last();
        System.out.println(last);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Zebra

获取比某个值小的最大元素

在TreeSet中,可以使用lower()方法来获取比某个值小的最大元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetLowerExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String lower = treeSet.lower("Tree");
        System.out.println(lower);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Lion

获取比某个值大的最小元素在TreeSet中,可以使用higher()方法来获取比某个值大的最小元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetHigherExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String higher = treeSet.higher("Tree");
        System.out.println(higher);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Zebra

获取比某个值小或等于的最大元素

在TreeSet中,可以使用floor()方法来获取比某个值小或等于的最大元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetFloorExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String floor = treeSet.floor("Tree");
        System.out.println(floor);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Tree

获取比某个值大或等于的最小元素

在TreeSet中,可以使用ceiling()方法来获取比某个值大或等于的最小元素。以下是一个示例:

import java.util.TreeSet;

public class TreeSetCeilingExample {

    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        treeSet.add("Zebra");
        treeSet.add("Cat");
        treeSet.add("Tree");
        treeSet.add("Lion");
        System.out.println(treeSet);

        String ceiling = treeSet.ceiling("Tree");
        System.out.println(ceiling);
    }
}

输出:

[Cat, Lion, Tree, Zebra]
Tree

总结

本文介绍了Java中的TreeSet。TreeSet是一个基于红黑树的实现,它可以进行有序的元素排序。在TreeSet中,元素按照升序排列。允许添加null元素,但只能有一个。在集合的迭代中,所有的元素都是按照升序排列的。如果您想要按照降序进行迭代,可以使用descendingIterator()方法。我们还演示了TreeSet的常用操作,如添加元素、删除元素、获取并删除第一个元素、获取并删除最后一个元素、获取第一个元素、获取最后一个元素、获取比某个值小的最大元素、获取比某个值大的最小元素、获取比某个值小或等于的最大元素、获取比某个值大或等于的最小元素等。在实际应用中,TreeSet是一种很有用的工具,可以轻松地处理一组有序的元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程