javaMerea 2019-06-21
package com.test.demo30;
import java.util.HashSet;
import java.util.Scanner;
public class Demo39 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一行字符串");
        String str = sc.nextLine();
        char[] ch = str.toCharArray();
        HashSet<Character> hs = new HashSet();
        for (char c : ch) {
            hs.add(c);
        }
        for (char c : hs) {
            System.out.println(c); //想要打印是按集合的顺序就用LinkedHashSet
        }
    }
}package com.test.demo30;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
public class Demo40 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(1);
        list.add(2);
        list.add(2);
        list.add(3);
        list.add(3);
        list.add(1);
        list.add(1);
        list.add(1);
        list.add(1);
        
        System.out.println("去重前");
        System.out.println(list);
        getSingle(list);
        System.out.println("去重后");
        System.out.println(list);
        
    }
    
    public static <T> void getSingle(List<T> list){
        LinkedHashSet<T> lhs = new LinkedHashSet<>();
        lhs.addAll(list);
        list.clear();
        list.addAll(lhs);
    }
}package com.test.demo30;
import java.util.TreeSet;
public class Demo41 {
    public static void main(String[] args) {
        TreeSet<Integer> ts = new TreeSet<>();
        ts.add(3);
        ts.add(3);
        ts.add(2);
        ts.add(2);
        ts.add(3);
        ts.add(1);
        ts.add(1);
        ts.add(3);
        
        System.out.println(ts);
    }
}后面的调用方法进行比较
TreeSet<Person> ts = new TreeSet<>();
        ts.add(new Person("张三",23));
        ts.add(new Person("张4",23));
        ts.add(new Person("张5",23));
        ts.add(new Person("张6",23));public int compareTo(Person o) {
    int num = this.age - o.age;       //年龄是主要排序依据
    return num == 0? this.name.compareTo(o.name) : num;   //姓名是次要排序依据【姓名之间的比较实际上比较的是unnicode码的值】
}使用方式:
自然顺序(Comparable)
比较器顺序(Comparator)
两种方式的区别
package com.test.demo30;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
public class Demo42 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("c");
        list.add("b");
        list.add("a3");
        list.add("a3");
        list.add("c3");
        list.add("c2");
        list.add("c2");
        list.add("a7");
        list.add("a5555");
        list.add("a777");
        list.add("a777");
        list.add("a777");
        list.add("a7");
        System.out.println(list);
        
        sort(list);
        
        System.out.println(list);
        
        
        
    }
    public static void sort(List<String> list) {
        TreeSet<String> ts = new TreeSet<>(new Comparator<String>(){
            public int compare(String s1,String s2){
                int num = s1.compareTo(s2);
                return num == 0 ? 1:num;   
                //TreeSet对比较器比较后返回为0的值会视为相等,就不会存入集合了,可以利用这一点存入重复的元素
            }
        });
        
        ts.addAll(list);
        list.clear();
        list.addAll(ts);
        
        
    }
}package com.test.demo30;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class Demo44 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        TreeSet<Integer> ts = new TreeSet<>(new Comparator<Integer>(){
            public int compare(Integer i1,Integer i2){
                int num = i2.compareTo(i1);
                return num == 0? 1 : num;
            }
        }); 
        
        while(true){
            System.out.println("请输入一个整数:");
            String line = sc.nextLine();
            if("quit".equals(line)){
                break;
            } else {
                Integer i =Integer.parseInt(line);
                ts.add(i);
            }
        }
        
        for (Integer k : ts) {
            System.out.println(k);
        }
        
    }
}package com.test.demo555;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class Demo444 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生成绩,格式是:姓名,语文成绩,数学成绩,英语成绩");
        TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>(){
            public int compare(Student s1,Student s2){
                int num = s2.getSum() - s1.getSum();
                return num == 0? 1: num;
            }
        });
        
        while(ts.size() < 5){
            String line = sc.nextLine();
            String[] arr = line.split(",");
            int chinese = Integer.parseInt(arr[1]);
            int math = Integer.parseInt(arr[2]);
            int english = Integer.parseInt(arr[3]);
            ts.add(new Student(arr[0],chinese,math,english));
        }
        
        System.out.println("排序后的学生信息:");
        for (Student s : ts) {
            System.out.println(s);
        }
        
        
        
    }
} 叨逼叨两句收拾收拾~18-11:Collection中的常见方法sortpackage com.test.demo001;System.out.println; //根据默认排序结果获取集合中的最大值