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");
}
}
}