去掉list中重复元素并合并相同对象

1.如果list中是基本数据类型,直接用set。

package com.hz;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Test {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		list.add(123);
		list.add(34);
		list.add(123);
		list.add(34);
		System.out.println("去重之前:");
		show(list);
		System.out.println();
		Set<Integer> set = new HashSet<Integer>();
		set.addAll(list);
		List<Integer> newList = new ArrayList<Integer>(set);
		System.out.println("去重之后:");
		show(newList);
	}
	private static void show(List<Integer> list){
		for (Integer integer : list) {
			System.out.print(integer+"\t");
		}
	}
}

结果:

去重之前:
123	34	123	34	
去重之后:
123	34	

2.如果是对象,重写hashCode和equals方法,也可以使用第一种方法。

3.如果不想用set,但也需要重写hashCode和equals方法。

package com.hz;

import java.util.ArrayList;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		List<Object> list = new ArrayList<Object>();
		list.add(123);
		list.add(34);
		list.add(123);
		list.add(34);
		System.out.println("去重之前:");
		show(list);
		System.out.println();
		// 建立一个用于临时存放不重复list元素的List集合。
		List<Object> list_tmp = new ArrayList<Object>(); 
		for (Object obj : list) {
			// 注意contains方法是通过equals方法进行比较的所以你要根据你自己的需要看是否需要重写list对象里面的equals方法。
			if (!list_tmp.contains(obj)) {
				list_tmp.add(obj);
			}
		}
		System.out.println("去重之后:");
		show(list_tmp);
	}

	private static void show(List<Object> list) {
		for (Object obj : list) {
			System.out.print(obj + "\t");
		}
	}
}
结果:

去重之前:
123	34	123	34	
去重之后:
123	34	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值