Java中ArrayList去重方法
阿新 • • 發佈:2021-06-16
方法一:
該方法不需要重新建立新的陣列可以直接遍歷
public class TestCopy {
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
list.add("張三");
list.add("李四");
list.add("王五");
list.add("趙六");
list.add("田七");
list.add("朱八");
list.add( "王一");
list.add("李四");
list.add("王五");
list.add("王五");
list.add("王一");
for (int i = 0; i < list.size(); i++) {
// 取出一個元素
String val = list.get(i);
System.out.println("i:"+val+"\t");
// 迴圈取出str元素之後的其他元素進行對比
for (int j = i+1; j < list.size(); j++) {
String s = list.get(j);
System.out.print("j:"+s);
// 比較兩個元素是否相等
if (val.equals(s)){
// 相等則移除該元素
list.remove(val);
// 由於移除後其他元素前移,所以需要重新--回到原位
i--;
}
}
System.out.println("\n====================");
}
System.out.println("去重後:"+list);
}
}
方法二:
建立兩個陣列,一個是舊陣列,存著沒去重的值;一個是新陣列,存去重後的值
public class TestCopy {
public static void main(String[] args){
// 建立兩個陣列一個存一個取,一個是去重前的陣列,一個是去重後的陣列
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list1 = new ArrayList<>();
list.add("張三");
list.add("李四");
list.add("王五");
list.add("趙六");
list.add("田七");
list.add("朱八");
list.add("王一");
list.add("李四");
list.add("王五");
for (String s : list) {
// 取出原陣列中的元素進行對比,如果新陣列中存在就不存,不存在存入新陣列中
if (!list1.contains(s)){
// 如果新陣列中存在則不存
list1.add(s);
}
}
System.out.println("去重前:"+list);
System.out.println("去重後:"+list1);
}
}
方法三:
使用set去重
public class TestCopy {
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
LinkedHashSet<String> set = new LinkedHashSet<>();
list.add("張三");
list.add("李四");
list.add("王五");
list.add("趙六");
list.add("田七");
list.add("朱八");
list.add("王一");
list.add("李四");
list.add("王五");
// 儲存到set中去重
for (String s : list) {
set.add(s);
}
list.clear();
for (String s : set) {
// 再將set中的值儲存進list中,方便使用
list.add(s);
}
System.out.println(list);
}
}