以下引见五种-差别的办法来除 Java 中ArrayList中的反复数据 1.利用LinkedHashSet删除arraylist中的反复数据LinkedHashSet实邻一个ArrayList删除反复数据的最好办法。LinkedHashSet正在内部完成两件事: Java示例利用LinkedHashSet删除arraylist中的反复项。正在给定的示例中,numbersList是包罗整数的arraylist,此中一些是反复的数字。 比方1,3战5.我们将列表增加到LinkedHashSet,然后将内容返回到列表中。成果arraylist出有反复的┞符数。
-
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.LinkedHashSet;
-
- public class ArrayListExample
-
- {
- public static void main(String[] args)
-
- {
-
- ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
-
- System.out.println(numbersList);
-
- LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
-
- ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
-
- System.out.println(listWithoutDuplicates);
-
- }
-
- }
赶钙代码
输出成果 -
- [1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
-
- [1, 2, 3, 4, 5, 6, 7, 8]
赶钙代码
2.利用java8新特征stream停止List来重要从arraylist中删除反复项,我们也能够利用java 8 stream api。利用steam的distinct()办法返回一个由差别数据构成的流,经由过程工具的equals()办法停止比力。 搜集一切地区数据List利用Collectors.toList()。 Java法式,用于正在没有利用Set的状况下从java中的arraylist中删除反复项。 -
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
-
- public class ArrayListExample
- {
- public static void main(String[] args)
-
- {
-
- ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
- System.out.println(numbersList);
- List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
-
- System.out.println(listWithoutDuplicates);
-
- }
-
- }
赶钙代码
输出成果 -
- [1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
-
- [1, 2, 3, 4, 5, 6, 7, 8]
赶钙代码
3.操纵HashSet不克不及增加反复数据的特征 因为HashSet不克不及包管增加挨次,以是只能做为判定前提包管挨次:-
- private static void removeDuplicate(List<String> list) {
- HashSet<String> set = new HashSet<String>(list.size());
- List<String> result = new ArrayList<String>(list.size());
- for (String str : list) {
- if (set.add(str)) {
- result.add(str);
- }
- }
- list.clear();
- list.addAll(result);
- }
赶钙代码
4.操纵List的contains办法轮回遍历,从头排序,只增加一次数据,制止反复:
-
- private static void removeDuplicate(List<String> list) {
- List<String> result = new ArrayList<String>(list.size());
- for (String str : list) {
- if (!result.contains(str)) {
- result.add(str);
- }
- }
- list.clear();
- list.addAll(result);
- }
赶钙代码
5.两重for轮回来重
-
- for (int i = 0; i < list.size(); i++) {
- for (int j = 0; j < list.size(); j++) {
- if(i!=j&&list.get(i)==list.get(j)) {
- list.remove(list.get(j));
- }
- }
赶钙代码
|