Java TreeSet示例

时间:2020-02-23 14:37:17  来源:igfitidea点击:

java treeset类是基于TreeMap的NavigableSet实现。元素或者由比较器排序,或者简单地按其自然顺序排序。就复杂性而言,此实现为所有基本操作(如add、remove、contains)提供了日志(n)时间开销

了解Java中的TreeSet有什么重要的

TreeSet实现SortedSet接口,这意味着不允许重复值。

无法在树集中插入异类对象,因为它不允许。它将在运行时抛出classCastException。

TreeSet类不保留元素的插入顺序,但元素按其键排序。

元素按升序排序并按树的顺序存储。

Java中TreeSet的局限性

值必须是可比较的,或者需要在构造函数中提供比较器

TreeSet中的构造函数

TreeSet():构造一个新的空树集,根据元素的自然顺序排序

TreeSet(集合<?extends E>c):构造一个包含指定集合中元素的新树集,并根据元素的自然顺序对其进行排序。

TreeSet(比较器<?super E>comparator):构造一个根据指定的comparator排序的空树集。

TreeSet(SortedSet<E>s):构造一个与指定集完全相同的新树集,包括元素的顺序。

TreeSet中的方法

voidadd(objecto):根据树集中的排序顺序添加指定的元素。不会添加重复项。

void clear():删除树集中的所有元素。

boolean contains(Object o):如果给定元素存在于树集中,则返回true,否则返回false。

Object first():返回树集中的第一个元素。

Object last():返回树集中的最后一个元素。

boolean isEmpty():如果树集不包含元素,则返回true,否则返回false。

Object clone():返回树集的浅副本。

int size():返回树集中的元素数。

Iterator Iterator():返回用于迭代树集元素的迭代器。

Comparator Comparator():返回用于对TreeSet中的元素排序的比较器。

有关所有方法的文档,可以访问Oracle官方文档页。

使用add()在树集中添加元素

语法:treeSet.add(Object o)

import java.io.*; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String args[]) 
  { 
      TreeSet<String> animals = new TreeSet<String>(); 

      animals.add("Elephant");
      animals.add("Tiger"); 
      animals.add("Lion");  

      System.out.println("TreeSet: " + animals); 
  } 
}

输出

TreeSet: [Elephant, Tiger, Lion]

使用first()和last()获取树集的第一个和最后一个元素

语法:

treeSet.first()

treeSet.last()

import java.io.*; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String args[]) 
  { 
      TreeSet<String> animals = new TreeSet<String>(); 

      animals.add("Elephant");
      animals.add("Tiger"); 
      animals.add("Lion");  

      System.out.println("TreeSet: " + animals); 
      System.out.println("The first element: " + animals.first());
      System.out.println("The last element: " + animals.last());
  } 
}

输出

TreeSet: [Elephant, Tiger, Lion]
The first element: Elephant
The last element: Lion

使用contains()检查元素是否在树集中

语法:treeSet.contains(Object element)

import java.io.*; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String args[]) 
  { 
      TreeSet<String> animals = new TreeSet<String>(); 

      animals.add("Elephant");
      animals.add("Tiger"); 
      animals.add("Lion");  

      System.out.println("TreeSet: " + animals);         
      System.out.println("Is 'Cat' in the tree set?" + animals.contains("Cat"));
      System.out.println("Is 'Lion' in the tree set?" + animals.contains("Lion"));
  } 
}

输出

TreeSet: [Elephant, Tiger, Lion]
Is 'Cat' in the tree set? false
Is 'Lion' in the tree set? true

使用remove()从树集中移除元素

语法:treeSet.remove(Object o)

import java.io.*; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String args[]) 
  { 
      TreeSet<String> animals = new TreeSet<String>(); 

      animals.add("Elephant");
      animals.add("Tiger"); 
      animals.add("Lion");  

      System.out.println("TreeSet: " + animals);
      animals.remove("Lion"); 
      animals.remove("Elephant"); 
      System.out.println("TreeSet: " + animals);
  } 
}

输出

TreeSet: [Elephant, Tiger, Lion]
TreeSet: [Tiger]

使用size()获取树集中的元素数

语法:treeSet.size()

import java.util.*; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String args[]) 
  { 
      TreeSet<String> animals = new TreeSet<String>(); 

      animals.add("Elephant"); 
      animals.add("Tiger"); 
      animals.add("Lion"); 

      System.out.println("TreeSet: " + animals); 

      System.out.println("The size of the tree set is: " + animals.size()); 
  } 
}

输出

TreeSet: [Elephant, Tiger, Lion]
The size of the tree set is: 3

使用isEmpty()检查树集是否为空

语法:treeSet.isEmpty()

import java.util.*; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String args[]) 
  { 
      TreeSet<String> animals = new TreeSet<String>(); 

      animals.add("Elephant"); 
      animals.add("Tiger"); 
      animals.add("Lion"); 

      System.out.println("TreeSet: " + animals); 

      System.out.println("Empty: " + animals.isEmpty()); 

      animals.clear(); 

      System.out.println("Empty: " + animals.isEmpty()); 
  } 
}

输出

TreeSet: [Elephant, Tiger, Lion]
Empty: false
Empty: true

使用Iterator()遍历树集

语法:

Iterator iterator = ts.iterator();
while (iterator.hasNext())
  System.out.print(iterator.next());
import java.util.Iterator; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String[] args) 
  { 
      TreeSet<String> 
          animals = new TreeSet<String>(); 
      animals.add("Elephant"); 
      animals.add("Tiger"); 
      animals.add("Lion"); 

      Iterator<String> iterator = animals.iterator(); 

      System.out.println("TreeSet: "); 
      System.out.println();
      while (iterator.hasNext()) 
          System.out.print(iterator.next() 
                           + "\n"); 
  } 
}

输出

TreeSet: 
Elephant
Tiger
Lion

使用增强的for循环遍历树集

语法:

for (String animal : animals)
  System.out.print(animal);
}
import java.util.Iterator; 
import java.util.TreeSet; 

public class TreeSetExample { 
  public static void main(String[] args) 
  { 
      TreeSet<String> 
          animals = new TreeSet<String>(); 
      animals.add("Elephant"); 
      animals.add("Tiger"); 
      animals.add("Lion"); 

      System.out.println("TreeSet: "); 
      System.out.println();
      for (String animal : animals) 
          System.out.print(animal + "\n"); 
  } 
}

输出

TreeSet:
Elephant
Tiger
Lion