TreeSet は順序付きセットであり、その機能は順序付き Set コレクションを提供することです。 AbstractSet 抽象クラス を継承し、NavigableSet
の主な機能:
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) イテレータ逆順走査メソッド:
りー
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 サイトの他の関連記事を参照してください。