以下介绍五种 - 不同的方法去除 Java 中 ArrayList 中的重复数据

1、使用 LinkedHashSet 删除 arraylist 中的重复数据

LinkedHashSet 是在一个 ArrayList 删除重复数据的最佳方法。LinkedHashSet 在内部完成两件事:删除重复数据保持添加到其中的数据的顺序Java 示例使用 LinkedHashSet 删除 arraylist 中的重复项。在给定的示例中,numbersList 是包含整数的 arraylist,其中一些是重复的数字。搜索公纵号:MarkerHub,关注回复[ vue ]获取前后端入门教程!例如 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 循环去重```javascript

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

6 , 以下是代码测试 与结果展示

public class Stream02 {public static void main(String[] args) {System.out.println("使用 Java 7: ");// 计算空字符串List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");System.out.println("列表: " +strings);long count = getCountEmptyStringUsingJava7(strings);System.out.println("空字符数量为: " + count);count = getCountLength3UsingJava7(strings);System.out.println("字符串长度为 3 的数量为: " + count);// 删除空字符串List<String> filtered = deleteEmptyStringsUsingJava7(strings);System.out.println("筛选后的列表: " + filtered);// 删除空字符串,并使用逗号把它们合并起来String mergedString = getMergedStringUsingJava7(strings,",");System.out.println("合并字符串: " + mergedString);// 获取列表元素平方数List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);List<Integer> squaresList = getSquares(numbers);System.out.println("平方数列表: " + squaresList);List<Integer> integers = Arrays.asList(1,2,13,4,15,6,17,8,19);System.out.println("列表: " +integers);System.out.println("列表中最大的数 : " + getMax(integers));System.out.println("列表中最小的数 : " + getMin(integers));System.out.println("所有数之和 : " + getSum(integers));System.out.println("平均数 : " + getAverage(integers));// 输出10个随机数System.out.println("随机数: ");Random random = new Random();for(int i=0; i < 10; i++){System.out.println(random.nextInt());}System.out.println("使用 Java 8: ");System.out.println("列表: " +strings);count = strings.stream().filter(string->string.isEmpty()).count();System.out.println("空字符串数量为: " + count);count = strings.stream().filter(string -> string.length() == 3).count();System.out.println("字符串长度为 3 的数量为: " + count);filtered = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.toList());System.out.println("筛选后的列表: " + filtered);mergedString = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.joining(", "));System.out.println("合并字符串: " + mergedString);squaresList = numbers.stream().map( i ->i*i).distinct().collect(Collectors.toList());System.out.println("Squares List: " + squaresList);System.out.println("列表: " +integers);IntSummaryStatistics stats = integers.stream().mapToInt((x) ->x).summaryStatistics();System.out.println("列表中最大的数 : " + stats.getMax());System.out.println("列表中最小的数 : " + stats.getMin());System.out.println("所有数之和 : " + stats.getSum());System.out.println("平均数 : " + stats.getAverage());System.out.println("随机数: ");random.ints().limit(10).sorted().forEach(System.out::println);// 并行处理count = strings.parallelStream().filter(string -> string.isEmpty()).count();System.out.println("空字符串的数量为: " + count);}private static int getCountEmptyStringUsingJava7(List<String> strings){int count = 0;for(String string: strings){if(string.isEmpty()){count++;}}return count;}private static int getCountLength3UsingJava7(List<String> strings){int count = 0;for(String string: strings){if(string.length() == 3){count++;}}return count;}private static List<String> deleteEmptyStringsUsingJava7(List<String> strings){List<String> filteredList = new ArrayList<String>();for(String string: strings){if(!string.isEmpty()){filteredList.add(string);}}return filteredList;}private static String getMergedStringUsingJava7(List<String> strings, String separator){StringBuilder stringBuilder = new StringBuilder();for(String string: strings){if(!string.isEmpty()){stringBuilder.append(string);stringBuilder.append(separator);}}String mergedString = stringBuilder.toString();return mergedString.substring(0, mergedString.length()-1);}private static List<Integer> getSquares(List<Integer> numbers){List<Integer> squaresList = new ArrayList<Integer>();for(Integer number: numbers){Integer square = new Integer(number.intValue() * number.intValue());if(!squaresList.contains(square)){squaresList.add(square);}}return squaresList;}private static int getMax(List<Integer> numbers){int max = numbers.get(0);for(int i=1;i < numbers.size();i++){Integer number = numbers.get(i);if(number.intValue() > max){max = number.intValue();}}return max;}private static int getMin(List<Integer> numbers){int min = numbers.get(0);for(int i=1;i < numbers.size();i++){Integer number = numbers.get(i);if(number.intValue() < min){min = number.intValue();}}return min;}private static int getSum(List numbers){int sum = (int)(numbers.get(0));for(int i=1;i < numbers.size();i++){sum += (int)numbers.get(i);}return sum;}private static int getAverage(List<Integer> numbers){return getSum(numbers) / numbers.size();}

结果展示 java 7

java 8

List 集合去重方式与 java8新特性stream去重相关推荐

  1. java8新特性-stream对map集合进行过滤的方法

    java8新特性-stream对map集合进行过滤的方法 stream对map集合进行过滤的方法

  2. Java8新特性Stream流详解

    陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油. 本文是介绍Java8新特性Stream流常用方法超详细教学 说 ...

  3. java8新特性stream流

    参考自深蓝至尊的Java8 新特性之流式数据处理 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式 ...

  4. java8新特性-Stream入门学习

    上一篇介绍了Lambda的学习,如果对Lambda表达式还不清晰的同学可以戳一下这个链接:java8新特性-lambda表达式入门学习.java8除了提供了Lambda表达式,操作集合的Stream ...

  5. Java8新特性——Stream流:不同于IO流的流,操作集合数据

    文章目录 Stream流 1.认识Stream流(源码说明) 1.1.Stream流和Collection的区别 1.2.流的获取方式 1.3.流操作和管道 1.4.并行性 1.5.不干扰内政 1.6 ...

  6. 【Stream】java8新特性Stream流总结

    一.什么是stream 在 java8 中增加了一个新的抽象接口 Stream API,使用 Stream 操作集合类似于使用 SQL 语句数据库查找数据类似,提供直观的方法进行操作. Stream ...

  7. 夯实基础,Java8新特性Stream详细教程

    1 基本特性 Java8的API中添加了一个新的特性: 流,即stream.stream是将数组或者集合的元素视为流,流在管道中流动过程中,对数据进行筛选.排序和其他操作. 1.1 流的特性 stre ...

  8. java8新特性-stream学习

    java8除了提供了Lambda表达式,操作集合的Stream API也是新特性中最值得学习和掌握的,它大大简化了,我们操作数据集合的代码量的书写.简单来说Stream是一个抽象概念,可以通过查找,过 ...

  9. Java8新特性Stream的常见用法

    目录 Stream简介 Stream的使用 创建流 (1) 通过Stream.of()将元素转化成流 (2)每个集合都可以通过调用 stream() 方法来产生一个流 使用举例 (1) 遍历/匹配(f ...

最新文章

  1. python简单代码input-python基础 input()函数
  2. Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
  3. 获取网站Alexa排名数值的方法
  4. python 全文搜索 句子_python新玩法:用python进行文章摘要拿取,只需要一行代码
  5. Android Serializable与Parcelable原理与区别
  6. 苹果mac投屏软件:AirServer
  7. FloatingActionButton
  8. 三菱FX5U rtu方式通讯两台施耐德ATV320变频器
  9. java获取url后缀,以及判断是否带参数(?params=xxx)
  10. 使用Python进行IP地址查询
  11. win10删除账户文件夹(C:\Users\***)后,无法登录账户的解决方法
  12. 电饭锅鸿蒙系统,有了美的轻食电饭煲,人们更加确定了做饭工具的重要性
  13. Switch上gamemaker,6.11发售,可不写代码创造游戏
  14. 虚拟机运行安卓ISO
  15. Linux中ifconfig command not found
  16. 实现Web端指纹登录
  17. android hid自动重连,Android Bluetooth HID
  18. Joint Coronary Centerline Extraction and Lumen Segmentation from CCTA CNNTracker and Vascular Grap
  19. 【jQuery】 # jQuery选择器
  20. 2016百度之星 - 测试赛 1002 列变位法解密 (模拟)

热门文章

  1. 服务器实体机虚拟机,服务器实体机与虚拟机
  2. cookies设置时间
  3. 对话设计黑客社区架构师Shadow#MiX-Talk 001
  4. 打开ENVI提示Unable to license IDL Runtime!!!
  5. 分布式基石|最难 paxos 和最易 raft?
  6. assertEquals 方法
  7. 【Vue】 第十六部分 插槽(默认插槽、具名插槽、作用域插槽)
  8. 毕业论文 word格式 大全(二)
  9. SQLsever查询结果,数据后面总是有很多空格
  10. ArcEngine 入门教程-帮助如何使用