16-02 Java语言基础(LinkedHashSet)

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值