数组去重的两种方法-----使用Set集合的特性,使用stream流

法一:使用Set集合的特性
  • 将数组集合转换为一个Set集合,再利用集合的toArray(),为其传一个new Integer[0]参数,意思生成一个Integer数组
  • 代码演示
import java.util.Arrays;
import java.util.HashSet;

public class Test2 {
    public static void main(String[] args) {
        Integer[] arr = new Integer[]{1,2,5,5,6,3,9,1,2,5,6,6,3,7,8,9};
        System.out.println(Arrays.toString(arr));
        //通过Arrays的asList将其转换为一个不可变集合类,再使用一个HashSet包装一个,即可更改
        HashSet<Integer[]> ints = new HashSet(Arrays.asList(arr));
        //将集合转换为数组
        Integer[] ints1 = ints.toArray(new Integer[0]);
        System.out.println(Arrays.toString(ints1));
    }
}
  • 结果
    在这里插入图片描述
法二:利用JDK1.8的stream流写法
使用stream流的过程
  • Stream流的三类方法:
  • 获取Stream流
    • 创建一条流水线,并把数据放到流水线上准备进行操作
  • 中间方法
    • 流水线上的操作
    • 一次操作完毕之后,还可以继续进行其他操作
  • 终结方法
    • 一个Stream流只能有一个终结方法
    • 是流水线上的最后一个操作
生成stream流的方式
  • Collection体系集合
    • 使用默认方法stream()生成流, default Stream stream()
  • Map体系集合
    • 把Map转成Set集合,间接的生成流
  • 数组
    • 通过Arrays中的静态方法stream生成流
  • 同种数据类型的多个数据
    • 通过Stream接口的静态方法of(T… values)生成流
去重步骤
  1. 利用Arrays工具类的stream生成stream流
Arrays.stream(arr)
  1. 再利用stream流的中间处理方法 distinct()过滤重复的元素
Arrays.stream(arr).distinct()
  1. 对数据使用Stream流的方式操作完毕后,可以把流中的数据收集到集合中。collect(Collectors.toList())收集为List集合
Arrays.stream(arr).distinct().collect(Collectors.toList())
  1. 将集合转换为数组,利用集合的toString()方法,传入一个new Integer[0]参数,代表是转换为Integer[]数组
//通过stream,转换为List集合
List<Integer> collect = Arrays.stream(arr).distinct().collect(Collectors.toList());
 //再List集合转换为数组
Integer[] integers = collect.toArray(new Integer[0]);
  • 总代码演示
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Test2 {
    public static void main(String[] args) {
        Integer[] arr = new Integer[]{1,2,5,5,6,3,9,1,2,5,6,6,3,7,8,9};
        System.out.println(Arrays.toString(arr));
        //通过stream,转换为List集合
        List<Integer> collect = Arrays.stream(arr).distinct().collect(Collectors.toList());
        //再List集合转换为数组
        Integer[] integers = collect.toArray(new Integer[0]);
        System.out.println(Arrays.toString(integers));
    }
}

  • 结果
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值