首页 > 学院 > 开发设计 > 正文

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

2019-11-06 06:06:25
字体:
来源:转载
供稿:网友

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	


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表