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
新聞熱點
疑難解答