当前位置: 首页 > 图灵资讯 > 技术篇> TreeSet

TreeSet

来源:图灵教育
时间:2023-06-18 09:26:05

Treeset的使用

以下是Treset的方法,代码实现如下:

public static void main(String[] args) {TreeSet<String> set = new TreeSet<>();///添加元素set.add(“小希”);set.add(小空);set.add(“小丽”);set.add(小光);///Int获得元素的数量 size = set.size();System.out.println(”获取元素的数量:” + size);//4///将newset1中的所有元素添加到set集合Tresetet中<String> newset1 = new TreeSet<>();Collections.addAll(newset1, "aaa","bbb","ccc","ccc");//使用集合工具(Collections)批量添加数据set.addAll(newset1);/////////set.clear();System.out.println判断集合中是否含有某一元素:" + set.contains(李白);//trueSystem.out.println判断集合中是否包含子集合:" + set.containsAll(newset1));//true///true表示没有元素,false表示元素System.out.println("判断集合中是否没有元素" + set.isEmpty());//false//set.remove(小空);//根据元素删除元素///set.removeAll(newset1);//////////set.retainAll(newset1);//保留交集//将集合转换为数组Object[] array1 = set.toArray();System.out.println(Arrays.toString(array1);///将集合转换为指定类型的数组String[] array2 = new String[set.size()];set.toArray(array2);System.out.println(Arrays.toString(array2);System.out.println("--------------------");////遍历集合 -- foreachfor (String element : set) {System.out.println(element);}System.out.println("--------------------");////遍历集合 -- IteratorIterator<String> iterator = set.iterator();while(iterator.hasNext(){///判断String是否有可迭代元素 next = iterator.next();///获得下一个元素System.out.println(next);}

Treeset的特点:自然排序

理解:Treeset将根据不同类型的元素使用不同的排序规则

public static void main(String[] args) {///Treset存储Integer元素:数字升序Tresetet<Integer> set1 = new TreeSet<>();set1.add(4);set1.add(2);set1.add(1);set1.add(5);set1.add(3);set1.add(3);for (Integer element : set1) {System.out.println(element);}System.out.println("------------");///Treset存储String元素:字典排序Tresetet<String> set2 = new TreeSet<>();set2.add("b");set2.add("d");set2.add("c");set2.add("a");set2.add("e");set2.add("e");for (String element : set2) {System.out.println(element);}}

输出:

12345------------abcde

外置比较器 - Comparator、内置比较器 - Comparable

比较器的优先级:外部比较器 > 内置比较器

外置比较器 - Comparator

理解:使用静态内部类和添加条件来判断输出

TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {///使用静态内部类和添加条件来判断输出///外置比较器的排名规则///首先比较两个学生是否相同,并根据名称长度进行排名,长度相同,按年龄排序@Overridepublic int compare(Student o1, Student o2) {if(o1.equals(o2)){return 0;}int namelen1 = o1.getName().length();int namelen2 = o2.getName().length();if(namelen1 != namelen2){return namelen1 - namelen2;}int age1 = o1.getAge();int age2 = o2.getAge();if(age1 != age2){return age1 - age2;}return 1;///回到一个时,无论如何都可以存储在Treset中});