treeset遍历(java怎么对树形结构进行遍历)
本文目录
- java怎么对树形结构进行遍历
- java遍历list与set哪个快
- Java TreeSet
无法删除大于127的数用Iterator可以遍历出来,但是remove不掉 - TreeSet是集合,但还有序;那不就在功能上和List一样了吗
java怎么对树形结构进行遍历
java"》import java.util.Iterator;import java.util.Random;import java.util.TreeSet;public class Demo{ public static void main(String args) throws Exception { TreeSet《Integer》 ts = new TreeSet《Integer》(); for(int i = 0; i 《 10; i++){ ts.add(new Random().nextInt(999)); } for(Iterator《Integer》 it = ts.iterator(); it.hasNext();){ System.out.println(it.next()); } }}
java遍历list与set哪个快
List和Set的区别很多,但是归根结底是由于它们的底层实现不一样所导致的。List的实现方式主要有:ArrayList和LinkedList,Set的实现方式主要有:HashSet、LinkedHashSet、TreeSet。ArrayList的底层实现是数组,当向其中添加一个元素时,会先检查数组容量,不足时会对数组进行扩容。由于扩容是比较消耗效率的,因此使用ArrayList时,应予以规避。同样的可以分析HashSet、LinkedHashSet和TreeSet。HashSet的底层实现是散列表,LinkedHashSet的底层实现是散列表加双向链表,TreeSet的底层实现的红黑树。它们元素位置取决于元素的hash值。因此采用Set进行存取的时候求取hash值是比较消耗资源的。有些便于快速获取hash值的方法是值得借鉴的,比如基本类型的包装器,当第一次运行hashCode方法,便会用一个静态变量将hash值存储起来,以后再次获取时便不需要重新计算。因此,List适合经常追加数据,插入,删除数据,但随机取数效率比较低。Set适合经常地随机储存,插入,删除,但是在遍历时效率比较低。
Java TreeSet无法删除大于127的数用Iterator可以遍历出来,但是remove不掉
package BaseExec;import java.util.Iterator;import java.util.TreeSet;public class TreeSetTest {public static void main(String args) {// TODO Auto-generated method stubTreeSet《Integer》 t = new TreeSet《Integer》();t.add(5);t.add(128);System.out.println(t.contains(128));t.remove(128);Iterator《Integer》 it = t.iterator();while(it.hasNext()){System.out.println(it.next());}}}true5 结果是这样的
TreeSet是集合,但还有序;那不就在功能上和List一样了吗
对于一般的 List 而言,是有序、可重复。
而 TreeSet 是有序、不可重复。
且 TreeSet 和 List 的有序不是一个概念。List 的有序,指保持元素的添加顺序。而 TreeSet 的有序,是指会调用 Comparable 接口的 compareTo 方法来比较元素大小进行排序,元素可以通过实现 Comparable 接口,重写 compareTo 方法来实现自定义的排序。
比如Integer 实现了Comparable 接口,如果按以下顺序添加,会按数值大小进行排序,而不是按元素添加的顺序:treeSet.add(1); treeSet.add(3); treeSet.add(2);
那么在遍历 treeSet 的时候,会发现它的顺序是 123,而不是 132。
而且 TreeSet 不能像 List 那样能通过索引进行操作。没有 get(i) 之类的方法。
更多文章:
thinkpad r61i(thinkpadr61i拆机换固态硬盘)
2024年7月8日 02:44