JavaList集合整型数组互相转换以及List集合去重

一、开发中经常需要数组和集合各种转换,结合Java8流式操作简单总结一下.

      1、int[] 转 List<Integer>

       转换样例如下:

int num[]={1,2,3,4,5,6,7,8,9,10};

      转换方式如下:

List<Integer> list = Arrays.stream(num).boxed().collect(Collectors.toList());     

      输出如下:

     附说明: 

         ①:Arrays.stream(num) 可以替换成IntStream.of(num),使用IntStream中的boxed()装箱。

         ②:将IntStream转换成Stream<Integer>。       

         ③:使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>。

         ④:使用Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>。     

       2、int[] 转 Integer[] 

  转换样例如下:

Integer[] integers=Arrays.stream(num).boxed().toArray(Integer[]::new);

       3、List<Integer> 转 int[] 

转换样例如下:

int[] arr=list.stream().mapToInt(Integer::intValue).toArray();

      4、Integer[] 转 List<Integer>

   转换样例如下:

List<Integer> list=new ArrayList<>(Arrays.asList(num));

     5、List整型数据累加求和

  转换样例如下:

list.stream().reduce(Integer::sum).orElse(0);

   附: Stream.reduce()合并流的元素并产生单个值。

           ①:Arrays.stream(numbers).reduce(0, (a, b) -> a + b);

           ②:Arrays.stream(numbers).reduce(0, Integer::sum); 求和

           ③:Arrays.stream(numbers).reduce(0, Integer::max); 求最大值

           ④:Arrays.stream(numbers).reduce(0, Integer::min); 求最小值 

           ⑤:String join = String.join("|", strings);连接字符串

          ⑥:map(x -> x.getXX().multiply(x.getXX().reduce(BigDecimal.ZERO, BigDecimal::add); 分组求和。

          ⑦:List<Object>中某个字段求和:list.stream().mapToLong(Object::getXX).sum;

二、List集合的去重

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

List<Integer> numbersList = new ArrayList<>(Arrays.asList(8, 7, 2, 3, 3, 9, 4, 5, 6, 6, 2, 7, 8));
LinkedHashSet<Integer> hashSet=new LinkedHashSet<>(numbersList);
List<Integer> resultList=new ArrayList<>(hashSet);
System.out.println(resultList);

   2、使用Java8的Stream流式方式.

List<Integer> collectList = numbersList.stream().distinct().collect(Collectors.toList());
System.out.println(collectList);

  3、List集合的contain方法.

List<Integer> containList=new ArrayList<>(numbersList.size());
for(Integer integer:numbersList){
   if(!containList.contains(integer)){
        containList.add(integer);
       }
    }
   numbersList.clear();
   numbersList.addAll(containList);
 System.out.println(numbersList);

 还是HashSet的方式,和For的双层循环的方式,这里就不在介绍了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道之简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值