0
点赞
收藏
分享

微信扫一扫

set实现排序输出(TreeSet,比较器,转list,转数组)

干自闭 2022-01-23 阅读 100
java
package w3day4;


import java.util.*;
import java.util.stream.Collectors;

/**
 * @Title
 * @Author Eastlin
 * @Description:
 * //Arrays.sort(books, new Comparator<Book>() {//比较器,或者说是一个对象辅助空间
 *             @Override
 *             public int compare(Book o1, Book o2) {//TODO 解决疑问-用法
 *                 return (int) (o1.getPrice() - o2.getPrice());
 *             }
 *         });
 */
public class SetTest {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();//特征:不重复,无序
        set.add(1);
        set.add(10);
        set.add(2);
        set.add(100);
        set.add(200);
        System.out.println(set );
        List <Integer> list1 = new ArrayList<Integer>(set); //set转list,有索引
        System.out.println("可以取到第五个元素:" + list1.get(4));//找到第五个元素

        //有序输出
        //方法1
        TreeSet<Integer> sortSet = new TreeSet<>(new Comparator<Integer>() {//比较器
            @Override
            public int compare(Integer o1, Integer o2) {//接口方法
                return o1.compareTo(o2);
            }
        });
        sortSet.addAll(set);
        System.out.println(sortSet);

        //方法2,基于方法2的改进,lambda表达式进行改进
//        TreeSet<Integer> sortedSet1 = new TreeSet<>(((o1, o2) -> o1.compareTo(o2)));
//        sortedSet1.addAll(set);
//        System.out.println(sortedSet1);

//方法3比较器的排序方法,addAll
//        TreeSet<Integer> sortedSet2 = new TreeSet<>(Comparator.naturalOrder());
//        sortedSet2.addAll(set);
//        System.out.println(sortedSet2);

//方法4比较器的排序方法后转list
//        List list = set.stream().sorted(Comparator.naturalOrder()).collect(Collectors.toList());
//        System.out.println(list);

//方法5比较器排序,转TreeSet
        Set newSet = set.stream().sorted(Comparator.naturalOrder()).collect(Collectors.toSet());
        TreeSet<Object> treeSet = new TreeSet<>();
        treeSet.addAll(newSet);
        System.out.println(treeSet);

        //方法6----拆箱,转数组(我们熟悉的)
        int[] array=new int[set.size()];
        Iterator setIte=set.iterator();
        int i=0;
       while (setIte.hasNext()){
            array[i++]= (int) setIte.next();
        }
        for (int j = 0; j <array.length ; j++) {
            System.out.print(array[j]+"\t\t");
        }
        Arrays.sort(array);
        System.out.println();
        for (int j = 0; j <array.length ; j++) {
            System.out.print(array[j]+"\t\t");
        }
    }
}

 

举报

相关推荐

0 条评论