首頁  >  文章  >  Java  >  如何使用Java中的TreeSet函數進行有序集合運算

如何使用Java中的TreeSet函數進行有序集合運算

王林
王林原創
2023-06-26 14:51:101770瀏覽

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);

需要注意的是:

  • lower()方法和floor()方法的差異是:lower()方法取得比指定元素小的最大元素,即小於指定元素的最大元素;而floor()方法取得比指定元素小的最近元素,即小於或等於指定元素的最近元素。
  • higher()方法和ceiling()方法的差異是:higher()方法取得比指定元素大的最小元素,即大於指定元素的最小元素;而ceiling()方法取得比指定元素大的最近元素,即大於或等於指定元素的最近元素。

三、總結

本文介紹了Java中的TreeSet函數的基本操作和進階操作。可依實際需求選用對應的操作方法,進行有序集合的操作。需要注意的是,在使用subSet()方法、headSet()方法和tailSet()方法時,如果子集合改變,原始的TreeSet也會改變,需要牢記這一點。

以上是如何使用Java中的TreeSet函數進行有序集合運算的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn