package hashset;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.TreeSet;
public class Demo9 {
/*
* 纪念有意义的一天
* 1:去除重复的 两种集合实现
* 2:不能去除重复的,而且保证有序
* 3:要求从键盘输入,保正有序
* 4要求从键盘输入,遇到pig结束,然后不能去掉重复的,而且保证有序
*/
public static void main(String[] args) {
// demo1();
// demo2();
//demo3();
//demo4();
}
private static void demo4() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
TreeSet<Integer>ts=new TreeSet<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer n1, Integer n2) {
int num=n1-n2;
return num==0?1:num;
}
});
while(true){
String s=sc.nextLine();
if("pig".equals(s)){
break;
}
Integer i=Integer.parseInt(s);
ts.add(i);
}
System.out.println(ts);
}
private static void demo3() {
/*
* c1表示的是即将要进入集合的元素,c2表示已经在集合中。
* 正序的话(默认升序)即将要进入集合的减去已经在集合中的。
* 倒序的话已经在集合中的元素减去即将要进入的元素
* (这是表示在字典中的顺序)
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String s=sc.nextLine();
TreeSet<Character> st = new TreeSet<Character>(
new Comparator<Character>() {
@Override
public int compare(Character c1, Character c2) {
int num = c1.compareTo(c2);
return num == 0 ? 1 : num;
}
});
char arr[]=s.toCharArray();
for (char c : arr) {
st.add(c);
}
for (Character c : st) {
System.out.print(c);
}
}
private static void demo2() {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("a");
list.add("c");
list.add("c");
list.add("c");
list.add("a");
list.add("b");
list.add("b");
Treedemo(list);
System.out.println(list);
}
private static void Treedemo(ArrayList<String> list) {
TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int num = s1.compareTo(s2);
return num == 0 ? 1 : num;
}
});
ts.addAll(list);
list.clear();
list.addAll(ts);
}
private static void demo1() {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
list.add("c");
list.add("c");
list.add("c");
list.add("a");
list.add("b");
list.add("b");
list.add("b");
System.out.println(list);
sort(list);
System.out.println(list);
sort1(list);
System.out.println(list);
}
private static void sort1(ArrayList<String> list) {
LinkedHashSet<String> lk = new LinkedHashSet<String>();// *
// 底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的集合对象
lk.addAll(list);
list.clear();
list.addAll(lk);
}
private static void sort(ArrayList<String> list) {
HashSet<String> hs = new HashSet<String>();// Set集合,无索引,不可以重复,无序(存取不一致)
hs.addAll(list);
list.clear();
list.addAll(hs);
}
}
|
|