Lambda实战

package day06;

import org.junit.Test;

import javax.swing.text.Keymap;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @auther hhh
 * @date 2019/1/3 22:07
 * @description
 */
public class LambdaCombat {
    /**
     * lambda 表达式、方法的引用、Stream API实战
     */
    /**
     * index.do?itemId=1&userId=1000&type=20&token=111111&key=index
     */
    @Test
    public void test1() {
        //将字符串转化为map
        String s = "index.do?itemId=1&userId=1000&type=20&token=111111&key=index";
        //转化为map,key为数组第0个,value为数组第一个,toMap有两个Function参数,以下代码代表输入一个数组输出一个数组中的值
        Map<String, String> map = Stream.of(s.split("&")).map(str -> str.split("=")).collect(Collectors.toMap(arr -> arr[0], arr -> arr[1]));
        System.out.println(map);//{type=20, userId=1000, index.do?itemId=1, key=index, token=111111}
    }
    private List<Book> bookTest(){
        List<Book> list = new ArrayList<>();
        //Integer id, String name, BigDecimal price, String type, LocalDate pulishDate
        list.add(new Book(1,"书1",new BigDecimal(25.6),"分类一", LocalDate.now().plusDays(10)));
        list.add(new Book(2,"书2",new BigDecimal(25.6),"分类一", LocalDate.now().plusDays(15)));
        list.add(new Book(3,"书3",new BigDecimal(25.6),"分类一", LocalDate.now().plusMonths(1)));
        list.add(new Book(4,"书4",new BigDecimal(25.6),"分类二", LocalDate.now().plusMonths(2)));
        list.add(new Book(5,"书5",new BigDecimal(25.6),"分类二", LocalDate.now().plusMonths(4)));
        list.add(new Book(6,"书6",new BigDecimal(25.6),"分类二", LocalDate.now().plusYears(1)));
        list.add(new Book(7,"书7",new BigDecimal(25.6),"分类三", LocalDate.now().minusYears(1)));
        list.add(new Book(8,"书8",new BigDecimal(25.6),"分类三", LocalDate.now().plusYears(2)));
        list.add(new Book(9,"书9",new BigDecimal(25.6),"分类四", LocalDate.now().minusYears(2)));
        list.add(new Book(10,"书10",new BigDecimal(25.6),"分类四", LocalDate.now().minusMonths(3)));
        return list;
    }
    @Test
    public void test2(){
        //取出所有book的ID放到List中
        List<Book> books = this.bookTest();
        List<Integer> list = books.stream().map(book -> book.getId()).peek(System.out::println).collect(Collectors.toList());
        System.out.println(list);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        //使用方法的引用
        List<Integer> ids = books.stream().map(Book::getId).peek(System.out::println).collect(Collectors.toList());
        System.out.println(ids);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        //取出ID以后其使用,分割,转化为一个字符串,先将其转成字符串,然后使用 , 拼接
        String s = books.stream().map(book -> book.getId().toString()).collect(Collectors.joining(","));
        System.out.println(s);//1,2,3,4,5,6,7,8,9,10
        String s1 = books.stream().map(book -> book.getId().toString()).collect(Collectors.joining(",","(",")"));//表示在最前面加一个括号在最后面加一个括号
        System.out.println(s1);//(1,2,3,4,5,6,7,8,9,10)

        String s2 = books.stream().map(book -> "'"+book.getId()+"'").collect(Collectors.joining(",","(",")"));
        System.out.println(s2);//('1','2','3','4','5','6','7','8','9','10') 每个字符使用单引号割开
    }
}

猜你喜欢

转载自www.cnblogs.com/huanghuanghui/p/10217471.html