ホームページ  >  記事  >  Java  >  Java コレクション TreeSet のサンプル コード

Java コレクション TreeSet のサンプル コード

黄舟
黄舟オリジナル
2017-03-13 17:45:371747ブラウズ

TreeSet は順序付きセットであり、その機能は順序付き Set コレクションを提供することです。 AbstractSet 抽象クラス を継承し、NavigableSet、Cloneable、Serializable インターフェイス を実装します。 TreeSet は TreeMap に基づいて実装されます。TreeSet の要素は、自然な並べ替えまたは提供された Comparator に従った並べ替えの 2 つの並べ替え方法をサポートします。


TreeSet のインターフェース依存関係グラフ:



図からわかるように:

(1) TreeSet は AbstractSet を継承し、NavigableSet インターフェースを実装します。

(2) TreeSet は重複要素のない順序付きセットであり、TreeMap を通じて実装されます。

TreeSet

の主な機能:


add(E object)
addAll(Collection<? E> collection)
clear()
Object  clone()
contains(Object object)
E   first()
isEmpty()
E last()
E pollFirst()
E pollLast()
E lower(E e)
E floor(E e)
E ceiling(E e)
E higher(E e)
remove(Object object)
size()
Comparator<? E> comparator()
Iterator<> iterator()
Iterator<> descendingIterator()
SortedSet<> headSet(E end)
NavigableSet<> descendingSet()
NavigableSet<> headSet(E endendInclusive)
SortedSet<> subSet(E startE end)
NavigableSet<> subSet(E startstartInclusiveE endendInclusive)
NavigableSet<> tailSet(E startstartInclusive)
SortedSet<> tailSet(E start)</a></p>TreeSet走査メソッド: <p></p> (1) イテレータ逐次走査メソッド: <p style="font-family:微软雅黑; font-size:14px; line-height:21px; widows:auto"></p>
<p style="font-family:微软雅黑; font-size:14px; line-height:21px; widows:auto"><br></p>
<pre style="font-family:Consolas; color:rgb(169,183,198); font-size:13.5pt; background-color:rgb(43,43,43)" class="brush:java;toolbar:false;">(Iterator iter = set.iterator()iter.hasNext())
{
    iter.next()}
(2) イテレータ逆順走査メソッド:


りー

(3)

foreachTraverse HashSet


(Iterator iter = set.descendingIterator()iter.hasNext()) 
{
    iter.next()}
TreeSet のサンプル コード: Java8 に基づく


<p style="margin-bottom: 9px;"><a href="http://www.php.cn/wiki/57.html" target="_blank">String</a>[] arr = (String[])set.to<a href="http://www.php.cn/wiki/58.html" target="_blank">Array</a>(<span style="background-color:inherit; color:rgb(204,120,50)"><a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> </span>String[<span style="background-color:inherit; color:rgb(104,151,187)">0</span>])<span style="background-color:inherit; color:rgb(204,120,50)">;<br></span><span style="background-color:inherit; color:rgb(204,120,50)">for </span>(String str:arr)<br>{<br>    System.out.<a href="http://www.php.cn/wiki/1363.html" target="_blank">printf</a>(<span style="background-color:inherit; color:rgb(106,135,89)">"for each : %s</span><span style="background-color:inherit; color:rgb(204,120,50)">\n</span><span style="background-color:inherit; color:rgb(106,135,89)">"</span><span style="background-color:inherit; color:rgb(204,120,50)">, </span>str)<span style="background-color:inherit; color:rgb(204,120,50)">;<br></span>}<br></p>
TreeSet のソース コード分析:

public class Hello {

public static void main(String[] args) {
testTreeSetAPIs();
}

// 测试TreeSet的api
public static void testTreeSetAPIs() {
        String val;

// 新建TreeSet
TreeSet tSet = new TreeSet();
// 将元素添加到TreeSet中
tSet.add("aaa");
// Set中不允许重复元素,所以只会保存一个“aaa”
tSet.add("aaa");
tSet.add("bbb");
tSet.add("eee");
tSet.add("ddd");
tSet.add("ccc");
System.out.println("TreeSet:"+tSet);

// 打印TreeSet的实际大小
System.out.printf("size : %d\n", tSet.size());

// 导航方法
// floor(小于、等于)
System.out.printf("floor bbb: %s\n", tSet.floor("bbb"));
// lower(小于)
System.out.printf("lower bbb: %s\n", tSet.lower("bbb"));
// ceiling(大于、等于)
System.out.printf("ceiling bbb: %s\n", tSet.ceiling("bbb"));
System.out.printf("ceiling eee: %s\n", tSet.ceiling("eee"));
// ceiling(大于)
System.out.printf("higher bbb: %s\n", tSet.higher("bbb"));
// subSet()
System.out.printf("subSet(aaa, true, ccc, true): %s\n", tSet.subSet("aaa", true, "ccc", true));
System.out.printf("subSet(aaa, true, ccc, false): %s\n", tSet.subSet("aaa", true, "ccc", false));
System.out.printf("subSet(aaa, false, ccc, true): %s\n", tSet.subSet("aaa", false, "ccc", true));
System.out.printf("subSet(aaa, false, ccc, false): %s\n", tSet.subSet("aaa", false, "ccc", false));
// headSet()
System.out.printf("headSet(ccc, true): %s\n", tSet.headSet("ccc", true));
System.out.printf("headSet(ccc, false): %s\n", tSet.headSet("ccc", false));
// tailSet()
System.out.printf("tailSet(ccc, true): %s\n", tSet.tailSet("ccc", true));
System.out.printf("tailSet(ccc, false): %s\n", tSet.tailSet("ccc", false));
// 删除“ccc”
tSet.remove("ccc");
// 将Set转换为数组
String[] arr = (String[])tSet.toArray(new String[0]);
        for (String str:arr)
            System.out.printf("for each : %s\n", str);

// 打印TreeSet
System.out.printf("TreeSet:%s\n", tSet);

// 遍历TreeSet
for(Iterator iter = tSet.iterator(); iter.hasNext(); ) {
            System.out.printf("iter : %s\n", iter.next());
}

// 删除并返回第一个元素
val = (String)tSet.pollFirst();
System.out.printf("pollFirst=%s, set=%s\n", val, tSet);

// 删除并返回最后一个元素
val = (String)tSet.pollLast();
System.out.printf("pollLast=%s, set=%s\n", val, tSet);

// 清空HashSet
tSet.clear();

// 输出HashSet是否为空
System.out.printf("%s\n", tSet.isEmpty()?"set is empty":"set is not empty");
}
}

Java8 に基づく TreeSet のソース コード分析

りー

以上がJava コレクション TreeSet のサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。