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

来源:互联网 发布:立方体全景图生成算法 编辑:程序博客网 时间:2024/06/05 05:52

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");}}}

结果:

去重之前:1233412334去重之后:12334

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");}}}
结果:

去重之前:1233412334去重之后:12334




0 0
原创粉丝点击