Java教程

Java TreeSet

TreeSet类层次结构
Java TreeSet类实现了Set接口,该接口使用树进行存储。它继承了AbstractSet类并实现了NavigableSet接口。 TreeSet类的对象以升序存储。
关于Java TreeSet类的重要要点是:
Java TreeSet类仅包含唯一元素,例如HashSet。 Java TreeSet类的访问和检索时间非常安静。 Java TreeSet类不允许使用null元素。 Java TreeSet类未同步。 Java TreeSet类保持升序。

TreeSet类的层次结构

如上图所示,Java TreeSet类实现了NavigableSet接口。 NavigableSet接口按层次结构顺序扩展了SortedSet,Set,Collection和Iterable接口。

TreeSet类声明

让我们看看java.util.TreeSet类的声明。
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable

Java TreeSet类的构造函数

构造函数 说明
TreeSet() 用于构造一个空树集,该树集将根据树集的自然顺序升序排列。
TreeSet(Collection<? extends E> c) 它用于构建包含集合c的元素的新树集。
TreeSet(Comparator<? super E> comparator) 它用于构造一个空树集,该树集将根据给定的比较器进行排序。
TreeSet(SortedSet <E> s) 它用于构建包含给定SortedSet元素的TreeSet。

Java TreeSet类的方法

方法 说明
boolean add(E e) 用于将指定的元素添加到此集中(如果尚不存在)。
boolean addAll(Collection<? extends E> c) 用于将指定集合中的所有元素添加到该集合中。
E ceiling(E e) 它从集合中返回指定元素的等于或最接近的最大元素,如果没有,则返回null。
Comparator<? super E> comparator() 它返回按顺序排列元素的比较器。
Iterator descendingIterator() 用于按降序迭代元素。
NavigableSet descendingSet() 它以相反的顺序返回元素。
E floor(E e) 它返回集合中指定元素的等于或最接近的最小元素,如果没有,则返回null。
SortedSet headSet(E toElement) 它返回小于指定元素的元素组。
NavigableSet headSet(E toElement, boolean inclusive) 它返回小于或等于指定元素的元素组。(如果包含,则为true)。
E high(E e) 它返回集合中指定元素中最接近的最大元素,如果没有,则返回null。
Iterator iterator() 用于按升序迭代元素。
E lower(E e) 它返回集合中指定元素中最接近的最小元素,或者为null,则没有这样的元素。
E pollFirst() 它用于检索和删除最低(第一个)元素。
E pollLast() 它用于检索和删除最高(最后)元素。
Spliterator spliterator() 它用于在元素上创建后绑定和故障快速拆分器。
NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 它返回位于给定范围之间的一组元素。
SortedSet subSet(E fromElement, E toElement)) 它返回位于给定范围之间的一组元素,该范围包括fromElement和不包括toElement。
SortedSet tailSet(E fromElement) 它返回一组大于或等于指定元素的元素。
NavigableSet tailSet(E fromElement, boolean inclusive) 它返回一组大于或等于(如果包含,则为真)指定元素的元素。
boolean contains(Object o) 如果此集合包含指定的元素,则返回true。
boolean isEmpty() 如果此集合不包含任何元素,则返回true。
boolean remove(Object o) 用于从该集中删除指定的元素(如果存在)。
void clear() 它用于删除此集合中的所有元素。
Object clone() 它返回此TreeSet实例的浅表副本。
E first() 它将返回此排序集中当前的第一个(最低)元素。
E last() 它返回当前在此排序集中的最后一个(最高)元素。
int size() 它返回此集合中的元素数。

Java TreeSet示例

Java TreeSet示例1:

我们来看一个简单的Java TreeSet示例。
import java.util.*;
class TreeSet1{
    public static void main(String args[]){
        TreeSet<String> al=new TreeSet<String>();
        al.add("Ravi");
        al.add("Vijay");
        al.add("Ravi");
        al.add("Ajay");
        Iterator<String> itr=al.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next());
        }
    }
}
输出:
Ajay
Ravi
Vijay

Java TreeSet示例2:

让我们看一个按降序遍历元素的示例。
import java.util.*;
class TreeSet2{
    public static void main(String args[]){
        TreeSet<String> set=new TreeSet<String>();
        set.add("Ravi");
        set.add("Vijay");
        set.add("Ajay");
        System.out.println("Traversing element through Iterator in descending order");
        Iterator i=set.descendingIterator();
        while(i.hasNext()) {
            System.out.println(i.next());
        }
    }
}
输出:
Traversing element through Iterator in descending order
Vijay
Ravi
Ajay
Traversing element through NavigableSet in descending order
Vijay
Ravi
Ajay

Java TreeSet示例3:

让我们看一个示例,该示例检索并删除最高和最低Value。
import java.util.*;
class TreeSet3{
    public static void main(String args[]){
        TreeSet<Integer> set=new TreeSet<Integer>();
        set.add(24);
        set.add(66);
        set.add(12);
        set.add(15);
        System.out.println("Highest Value: "+set.pollFirst());
        System.out.println("Lowest Value: "+set.pollLast());
    }
}
输出:
Highest Value: 12
Lowest Value: 66

Java TreeSet示例4:

在此示例中,我们执行各种NavigableSet操作。
import java.util.*;
class TreeSet4{
    public static void main(String args[]){
        TreeSet<String> set=new TreeSet<String>();
        set.add("A");
        set.add("B");
        set.add("C");
        set.add("D");
        set.add("E");
        System.out.println("Initial Set: "+set);
        System.out.println("Reverse Set: "+set.descendingSet());
        System.out.println("Head Set: "+set.headSet("C", true));
        System.out.println("SubSet: "+set.subSet("A", false, "E", true));
        System.out.println("TailSet: "+set.tailSet("C", false));
    }
}
输出:
Initial Set: [A, B, C, D, E]
Reverse Set: [E, D, C, B, A]
Head Set: [A, B, C]
SubSet: [B, C, D, E]
TailSet: [D, E]

Java TreeSet示例4:

在此示例中,我们执行各种SortedSetSet操作。
import java.util.*;
class TreeSet4{
    public static void main(String args[]){
        TreeSet<String> set=new TreeSet<String>();
        set.add("A");
        set.add("B");
        set.add("C");
        set.add("D");
        set.add("E");
        System.out.println("Intial Set: "+set);
        System.out.println("Head Set: "+set.headSet("C"));
        System.out.println("SubSet: "+set.subSet("A", "E"));
        System.out.println("TailSet: "+set.tailSet("C"));
    }
}
输出:
Intial Set: [A, B, C, D, E]
Head Set: [A, B]
SubSet: [A, B, C, D]
TailSet: [C, D, E]

Java TreeSet示例: 书籍

让我们看一个TreeSet示例,我们在其中添加书籍以进行设置并打印所有书籍。 TreeSet中的元素必须为Comparable类型。默认情况下,String和Wrapper类是Comparable的。要在TreeSet中添加用户定义的对象,您需要实现Comparable接口。
import java.util.*;
class Book implements Comparable<
Book>
{
    int id;
    String name,author,publisher;
    int quantity;
    public Book(int id, String name, String author, String publisher, int quantity) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.publisher = publisher;
        this.quantity = quantity;
    }
    public int compareTo(Book b) {
        if(id>b.id){
            return 1;
        }
        else if(id<b.id){
            return -1;
        }
        else{
            return 0;
        }
    }
}
public class TreeSetExample {
    public static void main(String[] args) {
        Set<
        Book>
        set=new TreeSet<
        Book>
        ();
        Book b1=new Book(121,"Let us C","Yashwant Kanetkar","BPB",8);
        Book b2=new Book(233,"Operating System","Galvin","Wiley",6);
        Book b3=new Book(101,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);
        TreeSet set.add(b1);
        set.add(b2);
        set.add(b3);
        for(Book b:set){
            System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);
        }
    }
}
输出:
101 Data Communications & Networking Forouzan Mc Graw Hill 4
121 Let us C Yashwant Kanetkar BPB 8
233 Operating System Galvin Wiley 6

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4