首页 > 其他分享 >TreeSet

TreeSet

时间:2023-06-17 20:32:46浏览次数:42  
标签:set System add println TreeSet out

TreeSet的使用

下面是TreeSet的方法使用,代码实现如下:

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集合中
		TreeSet<String> newSet1 = new TreeSet<>();
		Collections.addAll(newSet1, "aaa","bbb","ccc","ccc");//利用集合工具类(Collections)批量添加数据
		set.addAll(newSet1);

		//清空集合
		//set.clear();

		System.out.println("判断集合中是否包含某个元素:" + set.contains("李白"));//true
		System.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("--------------------");

		//遍历集合 -- foreach
		for (String element : set) {
			System.out.println(element);
		}

		System.out.println("--------------------");

		//遍历集合 -- Iterator
		Iterator<String> iterator = set.iterator();
		while(iterator.hasNext()){//判断是否有可迭代的元素
			String next = iterator.next();//获取下一个元素
			System.out.println(next);
		}

TreeSet的特点

特点:自然排序

理解:TreeSet会根据元素的不同类型,去使用不同的排序规则

public static void main(String[] args) {

		//TreeSet存储Integer的元素:数字升序
		TreeSet<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("------------");

		//TreeSet存储String的元素:字典排序
		TreeSet<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);
		}

	}

输出:

1
2
3
4
5
------------
a
b
c
d
e

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

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

外置比较器 - Comparator

理解:利用一个静态内部类,添加条件来判断输出

TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {//利用一个静态内部类,添加条件来判断输出
			//外置比较器的排序规则
			//先比较两个学生是否相同,不相同就按照姓名长度排序,长度相同就按照年龄排序
			@Override
			public 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;//返回一的时候无论如何都可以存到TreeSet里面去
			}
		});

标签:set,System,add,println,TreeSet,out
From: https://blog.51cto.com/u_16154651/6506030

相关文章

  • 2023年6月11日,TreeSet,Comparable,HashMap
    1.Set1.TreeSetTreeSet1、存储Integer的元素,升序排列2、存储String的元素,字典排列TreeSet根据元素的不同类型使用不同的排序规则publicclasstest01{/***知识点:TreeSet*1、存储Integer的元素,升序排列*2、存储String的元素,字典排列*......
  • Set系列集合:TreeSet集合
                 ......
  • java学习日记20230522-TreeSet
    有序键值对集合publicclassTreeSetExercise{publicstaticvoidmain(String[]args){Integerinteger=newInteger(10);TreeSettreeSet=newTreeSet(newComparator(){@Overridepublicintcompare(Objecto1,Obj......
  • Java-Day-19( 对集合实现类的选择 + TreeSet + TreeMap )
    Java-Day-19总结-开发中如何选择集合实现类在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特性进行选择先判断存储的类型(一组对象或一组键值对)一组对象(单列):Collection接口允许重复:List增删多:LinkedList[底层维护了一个双向链......
  • Map - TreeSet & TreeMap 源码解析
    Java7-TreeSet&TreeMap总体介绍前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。因此本文将重点分析TreeMap。JavaTreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natu......
  • HashSet以及TreeSet实现了哪些接口?有什么作用?
    HashSet简介HashSet是Java集合框架中非常常用的一种无序、不可重复的集合。它是通过哈希表来实现的,可以快速检索元素并消除重复。泛型的作用泛型可以帮助我们在编译时就发现类型错误,从而减少了运行时错误的发生。在使用HashSet时,我们通常会指定它的泛型类型为某个具体的类或接......
  • 一篇文章让你面试畅谈HashMap,Hashtable,TreeSet,TreeMap
    HashMapMap与Collection并列存在。用于保存具有映射关系的数据:Key-ValueMap中的key和value可以是任何引用类型,会封装到HashMap$Node对象中Map中的key不允许重复,原因和HashSet一样,前面分析过源码Map中的value可以重复Map的key可以是null,value也可以为null,注意key为null只能有一个,val......
  • java TreeSet集合概述和特点
       ......
  • TreeSet的使用以及Comparator接口
    packageedu.wtbu;importjava.util.Comparator;importjava.util.Iterator;importjava.util.TreeSet;publicclassDemo01{publicstaticvoidmain(String[]args......
  • treemap/treeset 相关 1438
    1438. LongestContinuousSubarrayWithAbsoluteDiffLessThanorEqualtoLimitMedium2790115AddtoListShareGivenanarrayofintegers nums andani......