java去重的五种方式

本文主要介绍了Java中去除重复元素的五种不同方法,包括使用HashSet、ArrayList的removeIf、Stream的distinct、自定义比较器以及利用Map的特性进行去重。这些方法各有优劣,适用于不同的场景,对于理解和提升Java编程能力具有一定的帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main方法

public static void main(String[] args) {
		String s = "aaabbbcccddddqweqwertt";
		System.out.println(remove1(s));//方法一
		System.out.println(remove2(s));//方法二
		System.out.println(remove3(s));//方法三
		System.out.println(remove4(s));//方法四
		System.out.println(remove5(s));//方法五
}

方法一:

//字符串
	public static String remove1(String str){
		String s = "";
		
		for (int i = 0; i < str.length(); i++) {
			String arr =str.charAt(i) + "";
			if (s.indexOf(arr) == -1) {
				s=s+arr;
			}
		}
		return s;
	}

方法二:

//Set
	public static String remove2(String str){
		String s = "";
		Set set = new HashSet();
		for (int i = 0; i <str.length(); i++) {
			String arr = str.charAt(i) + "";
			set.add(arr);
		}
		return toString(set);
	}
	public static String toString(Set set){
		String str = "";
		for (Object obj : set) {
			str = str+ (String)obj;
 		}
		return str;
	}

方法三:

//List
	public static String remove3(String str){
		
		List list = new ArrayList();
		
		for (int i = 0; i < str.length(); i++) {
			
			String s = str.charAt(i)+"";
			if (!list.contains(s)) {
				list.add(s);
			}
		}
		
		return toString(list);
	}
	public static String toString(List list){
		String str = "";
		for (Object obj : list) {
			str = str+ (String)obj;
 		}
		return str;
		
	}

方法四:

//HashMap
	public static String remove4(String str){
		
		Map map = new HashMap();
		for (int i = 0; i < str.length(); i++) {
			String s = str.charAt(i)+"";
			map.put(s, 1);
			
		}
		Set set =map.keySet();
		return toString1(set);
	}
	public static String toString1(Set set){
		String str = "";
		for (Object obj : set) {
			str = str+ (String)obj;
 		}
		return str;
	}

方法五:

//字符串数组集合
	public static String remove5(String str){
		String[] arr = new String[str.length()];
		String s = "";
		for (int i = 0; i < str.length(); i++) {
			arr[i] = str.charAt(i)+"";
		}
		
		for (int i = 0; i < arr.length; i++) {
			for (int j = i+1; j <arr.length; j++) {
				if (arr[i].equals(arr[j])) {
					arr[j] = "s";
					
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			if (!arr[i].equals("s")) {
				s= s+arr[i];
			}
		}
		return s;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值