Java的TreeSet是一種基於紅黑樹實作的有序集合。它的特點是元素按照大小順序排序,可以快速地增加、刪除和搜尋元素。本文將介紹如何使用Java中的TreeSet函數進行有序集合操作,以便更好地應用在實際程式設計中。
一、TreeSet的基本操作
1.建立TreeSet物件
要使用TreeSet,需要先建立一個TreeSet物件。可以使用無參數的建構子來建立一個空的TreeSet,也可以在建立TreeSet物件時指定一個Comparator來自訂排序規則。
範例程式碼:
TreeSet<Integer> set = new TreeSet<>(); TreeSet<String> set2 = new TreeSet<>(new Comparator<String>() { @Override public int compare(String o1, String o2) { // 自定义排序规则 return o1.compareToIgnoreCase(o2); } });
2.新增元素
透過add()方法新增元素到TreeSet。 TreeSet會自動依照元素大小順序進行排序,相同的元素只會儲存一次。
範例程式碼:
set.add(3); set.add(1); set.add(2); set.add(3); // 结果为[1, 2, 3] System.out.println(set);
3.刪除元素
可以使用remove()方法刪除TreeSet中的元素。
範例程式碼:
set.remove(3); // 结果为[1, 2] System.out.println(set);
4.判斷元素是否存在
可以使用contains()方法判斷TreeSet中是否存在某個元素。
範例程式碼:
boolean contains = set.contains(2); // 结果为true System.out.println(contains);
5.取得元素個數
可以使用size()方法取得TreeSet中元素的個數。
範例程式碼:
int size = set.size(); // 结果为2 System.out.println(size);
6.遍歷元素
可以使用for迴圈或forEach()方法遍歷TreeSet中的元素。
範例程式碼:
for (Integer i : set) { System.out.print(i + " "); } System.out.println(); set.forEach(System.out::println);
輸出結果:
1 2 1 2
二、TreeSet的高階操作
1.取得第一個元素與最後一個元素
可以使用first()和last()方法來取得TreeSet中的第一個元素和最後一個元素。
範例程式碼:
Integer first = set.first(); Integer last = set.last(); // 结果为1 2 System.out.println(first + " " + last);
2.取得子集合
可以使用subSet()方法取得TreeSet的一個子集合,該子集合包含從fromElement(包含)到toElement(不包括)之間的元素。如果不指定fromElement,則表示從TreeSet中的第一個元素開始。
範例程式碼:
TreeSet<Integer> subSet = (TreeSet<Integer>) set.subSet(1, 2); // 结果为[1] System.out.println(subSet); TreeSet<String> subSet2 = (TreeSet<String>) set2.subSet("A", "c"); // 结果为[b, C] System.out.println(subSet2);
需要注意的是,如果子集合改變,原始的TreeSet也會改變。
3.取得頭部或尾部元素的子集合
可以使用headSet()方法和tailSet()方法取得TreeSet的頭部(不包括toElement)或尾部(包括fromElement)元素的子集合。
範例程式碼:
TreeSet<Integer> headSet = (TreeSet<Integer>) set.headSet(2); // 结果为[1] System.out.println(headSet); TreeSet<String> tailSet = (TreeSet<String>) set2.tailSet("b"); // 结果为[b, C] System.out.println(tailSet);
同樣要注意的是,如果子集合改變,原始的TreeSet也會改變。
4.取得比指定元素小或大的元素
可以使用lower()方法、floor()方法、higher()方法和ceiling()方法取得比指定元素小或大的元素。
範例程式碼:
Integer lower = set.lower(2); Integer floor = set.floor(2); Integer higher = set.higher(1); Integer ceiling = set.ceiling(1); // 结果为1 2 2 1 System.out.println(lower + " " + floor + " " + higher + " " + ceiling);
需要注意的是:
三、總結
本文介紹了Java中的TreeSet函數的基本操作和進階操作。可依實際需求選用對應的操作方法,進行有序集合的操作。需要注意的是,在使用subSet()方法、headSet()方法和tailSet()方法時,如果子集合改變,原始的TreeSet也會改變,需要牢記這一點。
以上是如何使用Java中的TreeSet函數進行有序集合運算的詳細內容。更多資訊請關注PHP中文網其他相關文章!