LinkedHashSet
- 概述:底层是链表,是Set集合中唯一一个能保证怎么存就怎么取的集合对象,因为是HashSet的子类,所以也能保证元素不重复
- 案例演示:输出10个1~20的随机数,要求不能重复
import java.util.LinkedHashSet; import java.util.Random; public class Demo4_LinkedHashSet { public static void main(String[] args) { LinkedHashSet<Integer> lhs = new LinkedHashSet<>(); // while(lhs.size() < 10) { // int x = (int)(Math.random() * 20) + 1; // lhs.add(x); // } Random rand = new Random(); while(lhs.size() < 10) { int x = rand.nextInt(20) + 1; lhs.add(x); } System.out.println(lhs); } }
案例演示1:
从键盘读取一行输入,去掉其中重复字符,打印出不同的那些字符
import java.util.HashSet;
import java.util.Scanner;
public class Demo5_LinkedHashSet {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
String str = in.nextLine();
HashSet<Character> hs = new HashSet<>();
for(int i = 0; i < str.length(); i++) {
hs.add(str.charAt(i));
}
System.out.println(hs);
}
}
输入 & 输出:
654654231348as4dsadasdasaaaaaa
[1, a, 2, 3, s, 4, d, 5, 6, 8]
案例演示2:去除List集合中的重复元素
import java.util.ArrayList;
import java.util.LinkedHashSet;
public class Demo6_HashSet {
public static void main(String[] args) {
/*
* 去除List集合中的重复元素
* 1、创建一个LinkedHashSet集合
* 2、将List集合中所有的元素添加到LinkedHashSet集合
* 3、将List集合中元素删除
* 4、将LinkedHashSet集合中的元素添加回List集合中
*
* */
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("a");
list.add("a");
getSingleList(list);
System.out.println(list);
}
public static void getSingleList(ArrayList<String> list) {
LinkedHashSet<String> lhs = new LinkedHashSet<>();
// for(int i = 0; i < list.size(); i++) {
// lhs.add(list.get(i));
// }
lhs.addAll(list);
list.removeAll(list);
// for(String str : lhs) {
// list.add(str);
// list.addAll
// }
list.addAll(lhs);
}
}
输出:
[a, b, c]