Jdk1.8新特性常用操作-列举一部分

JDK8集合操作

因为太多了,这里列举几种比较常用的:
1)遍历list
2)遍历list得到map
3)遍历list,根据某个key进行分组
4)遍历多个对象,合并多个对象中的明细行
5)foreach:遍历操作,无返回值
6)distrinct:去重操作
7)filter:过滤,返回filter方法体中为true的对象

首先引入guaua包和fastjson包,方便打印:

<dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>19.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.60</version>
        </dependency>

1)代码示例:

package com.test;

import com.alibaba.fastjson.JSON;
import com.google.common.base.Joiner;
import com.sun.scenario.effect.Identity;
import org.junit.Test;

import java.lang.reflect.Array;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

public class JDK8Test {

    class A{
        private String id;
        private String name;

        private List<A> lines;

        public List<A> getLines() {
            return lines;
        }

        public void setLines(List<A> lines) {
            this.lines = lines;
        }

        public void setId(String id) {
            this.id = id;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getId() {
            return id;
        }

        public String getName() {
            return name;
        }
    }


    /***
     * 遍历list
     */
    @Test
    public void testList(){
        List<A> list = new ArrayList<>();
        A a = new A();
        a.setId("1");
        a.setName("张三");
        A a2 = new A();
        a2.setId("2");
        a2.setName("李四");
        list.add(a);
        list.add(a2);
        List<String> idList = list.stream().map(A::getId).collect(Collectors.toList());
        System.out.println(Joiner.on(",").join(idList));
        //运行结果:1,2
    }

    /***
     * 遍历list分组得到map
     */
    @Test
    public void testGetMap(){
        List<A> list = new ArrayList<>();
        A a = new A();
        a.setId("1");
        a.setName("张三");
        A a2 = new A();
        a2.setId("2");
        a2.setName("李四");
        list.add(a);
        list.add(a2);
        Map<String,String> idList = list.stream().collect(Collectors.toMap(A::getId,A::getName));
        Map<String,A> aList = list.stream().collect(Collectors.toMap(A::getId, Function.identity()));
        System.out.println(idList.toString());
        System.out.println(JSON.toJSONString(aList));
		//运行结果:
		//{1=张三, 2=李四}
		//{"1":{"id":"1","name":"张三"},"2":{"id":"2","name":"李四"}}
    }

    /***
     * 遍历list,根据id进行分组
     */
    @Test
    public void testGroupMap(){
        List<A> list = new ArrayList<>();
        A a = new A();
        a.setId("1");
        a.setName("张三");
        a.setId("1");
        a.setName("王五");
        A a2 = new A();
        a2.setId("2");
        a2.setName("李四");
        list.add(a);
        list.add(a2);
        Map<String,List<A>> idList = list.stream().collect(Collectors.groupingBy(A::getId));
        System.out.println(JSON.toJSONString(idList));
        //运行结果:
        //{"1":[{"id":"1","name":"王五"}],"2":[{"id":"2","name":"李四"}]}
    }

    /***
     * flatmap合并用法
     */
    @Test
    public void testFlatMap(){
        A a = new A();
        a.setName("name1");
        a.setId("1");

        A a2 = new A();
        a2.setName("name2");
        a2.setId("2");

        List<A> list1 = new ArrayList<>();
        list1.add(a);
        list1.add(a2);


        A a3 = new A();
        a3.setName("name3");
        a3.setId("3");

        A a4 = new A();
        a4.setName("name4");
        a4.setId("4");

        List<A> list2 = new ArrayList<>();
        list2.add(a3);
        list2.add(a4);

        //对象A1

        A test1 = new A();
        A test2 = new A();

        test1.setLines(list1);
        test2.setLines(list2);

        List<A> list = new ArrayList<>();
        list.add(test1);
        list.add(test2);

        List<A> allList = list.stream().map(A::getLines).flatMap(Collection::stream).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(allList));
        //运行结果:
        //[{"id":"1","name":"name1"},{"id":"2","name":"name2"},{"id":"3","name":"name3"},{"id":"4","name":"name4"}]
    }

}

当前还有很多其他的用法:
1)foreach:遍历操作,无返回值
2)distrinct:去重操作
3)filter:过滤,返回filter方法体中为true的对象

我们写一段代码来一次性演示3种用法:

@Test
    public void testForeach(){
        A a = new A();
        a.setId("1");
        a.setName("1");

        A a2 = new A();
        a2.setId("1");
        a2.setName("2");

        A a3 = new A();
        a3.setId("3");
        a3.setName("3");

        List<A> list = new ArrayList<>();
        list.add(a);
        list.add(a2);
        list.add(a3);

        //foreach操作:
        list.forEach(item->{
            System.out.println(item.getName());
        });

        //distinct操作:
        List<String> idList = list.stream().map(A::getId).distinct().collect(Collectors.toList());
        System.out.println(Joiner.on(",").join(idList));

        //filter操作:
        List<A> aList = list.stream().filter(item->!"1".equals(item.getId())).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(aList));
    }

运行结果:

1
2
3

1,3

[{"id":"3","name":"3"}]

只记录一点用法吧,很多其他用法都是想通的;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值