简介:
本篇介绍了3中去重List数据的方法。分别是:普通的for循环;利用set进行去重;利用迭代器进行去重。
例子代码:
package com.tools.utils;
import java.util.*;
public class ListUtils {
//去除List列表中重复值方法一:普通的方法,利用for循环去重
public static List<String> duplicateListByloop(List<String> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
//去除List列表中重复值方法二:使用set进行去重
public static List<String> duplicateListBySet(List<String> list) {
HashSet h = new HashSet(list);
List newList = new ArrayList();
newList.addAll(h);
return newList;
}
//去除List列表中重复值方法二:使用迭代器进行去重
public static List<String> duplicateListyByIte(List<String> list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
return newList;
}
public static List<String> initTestData() {
//预计结果:去重后,"abc", "11", "22", "33", "def"
String[] ar = { "abc", "11", "abc", "22", "33", "def", "def" };
ArrayList list = new ArrayList();
for (int i = 0; i < ar.length; i++) {
list.add(ar[i]);
}
return list;
}
//测试主函数
public static void main(String args[]) {
List<String> list = initTestData();
System.out.println("原始list data:");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
//test case1:
List<String> resList = duplicateListByloop(list);
System.out.println("1. test case1 去重后:");
for (int i = 0; i < resList.size(); i++) {
System.out.print(resList.get(i) + " ");
}
System.out.println("\n");
//test case2:
list.clear();
list = initTestData();
resList.clear();
resList = duplicateListBySet(list);
System.out.println("2. test case2 去重后:");
for (int i = 0; i < resList.size(); i++) {
System.out.print(resList.get(i) + " ");
}
System.out.println("\n");
//test case3:
list.clear();
list = initTestData();
resList.clear();
resList = duplicateListyByIte(list);
System.out.println("3. test case3 去重后:");
for (int i = 0; i < resList.size(); i++) {
System.out.print(resList.get(i) + " ");
}
System.out.println("\n");
}
}
测试结果:
原始list data:
abc 11 abc 22 33 def def
1. test case1 去重后:
abc 11 22 33 def2. test case2 去重后:
11 22 33 abc def3. test case3 去重后:
abc 11 22 33 def
Process finished with exit code 0
列表和字符串的操作,最常用的数据结构。作为面向对象的语言,java提供了一系列相关类。