添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

目标类型 List

转 List

List<String> list1 = Lists.newArrayList();
List<String> list2 = list1.stream().map(string -> {
	return "stream().map()处理之后:" + string;
}).collect(Collectors.toList());

转 Map

转换属性 Map,值为属性

List<SystemTabMenu> allList = Lists.newArrayList();
Map<String, String> map = allList.stream().
	collect(Collectors.toMap(SystemTabMenu::getParentid, SystemTabMenu::getParentid));
// Collectors.toMap在遇到重复键时会抛出IllegalStateException异常
// 如果你希望在遇到重复键时保留最后一个值,可以使用Map::putIfAbsent作为BinaryOperator
Map<String, String> map = allList.stream().
	collect(Collectors.toMap(SystemTabMenu::getParentid, SystemTabMenu::getParentid,
                                  (oldValue, newValue) -> newValue));

转换属性 Map,值为对象

List<SystemTabMenu> allList = Lists.newArrayList();
Map<String, SystemTabMenu> map = allList.stream().
	collect(Collectors.toMap(SystemTabMenu::getParentid, v -> v));
List<UploadDataStatistics> allList = Lists.newArrayList();
Map<String, Integer> resultMap = allList.stream().
    collect(Collectors.groupingBy(UploadDataStatistics::getDataType,
                       Collectors.summingInt(UploadDataStatistics::getSuccessnum)));

转 Map<String, List>

List<SystemTabMenu> allList = Lists.newArrayList();
Map<String, List<SystemTabMenu>> map = allList.stream().
	collect(Collectors.groupingBy(e -> e.getParentid()));

转数组 String []

List<String> list = Arrays.asList("a","b","c");
String[] strings=list.toArray(new String[0]);

转数组 Integer []

List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
Integer[] integers = list.toArray(new Integer[0]);

转数组 int []

List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
int[] arr1 = list.stream().mapToInt(Integer::valueOf).toArray();
  • 想要转换成 int [] 类型,就得先转成 IntStream。

  • 通过 mapToInt () 把 Stream<Integer> 调用 Integer::valueOf 来转成 IntStream

  • 通过 IntStream 中默认 toArray () 转成 int []。

    过滤出一个元素

    List<User> users = Lists.newArrayList();
    User match = users.stream().filter((user) -> user.getId() == 1).findAny().get();

    求最小值

    int min = list.stream().mapToInt(t->t).min().getAsInt();

    转拼接字符串

    List<Long> list = Arrays.asList(0, 1, 2);
    String ids = list.stream().map(String::valueOf).collect(Collectors.joining(","));

    目标类型 Set

    转 Set

    Set<String> nameSet = personSet.stream().map(Person::getName).collect(Collectors.toSet());

    目标类型 Map

    转 List

    map.entrySet().stream().map(e -> e.getValue() + e.getKey()).collect(Collectors.toList());

    取 Value 最大的 Key

    Map<String, Integer> map = new HashMap<>();
    String maxKey = map.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue((t1, t2) -> t2 - t1))
            .map(e -> e.getKey()).collect(Collectors.toList()).get(0);

    收集 Map<Kry,List>

    Map<Integer, List<Integer>> map = new TreeMap<>();
    map.computeIfAbsent(key, k -> new ArrayList<>());
    map.get(key).add(value);

    转拼接字符串

    Map<Long, String> infoIds = new TreeMap<>();
    String ids = infoIds.keySet().stream().map(String::valueOf).collect(Collectors.joining(","));

    目标类型 int 数组

    截取数组

    int[] data = {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
    int[] newData = Arrays.copyOfRange(data,2,7);
    // {2,3,4,5,6}

    转 List

    Integer [] 转 List<Integer>

    List<Integer> list = Arrays.asList(integers1);

    int [] 转 List<Integer>

    int[] data = {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
    List<Integer> list = Arrays.stream(data).boxed().collect(Collectors.toList());
    // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    Arrays.stream (arr) 可以替换成 IntStream.of (arr)。

  • 使用 Arrays.stream 将 int [] 转换成 IntStream。
  • 使用 IntStream 中的 boxed () 装箱。将 IntStream 转换成 Stream<Integer>
  • 使用 Stream 的 collect (),将 Stream<T> 转换成 List<T> ,因此正是 List<Integer>
  • String [] 转换为 List<Integer>

    String[] stringArray = {"1", "2", "3", "4", "5"};
    List<Integer> integerList = Arrays.stream(stringArray)
                                      .map(Integer::valueOf)
                                      .collect(Collectors.toList());

    转包装类数组

    int [] 转 Integer []

    int[] data = {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
    Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
    // {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 }

    Arrays.stream (arr) 可以替换成 IntStream.of (arr)。

  • 使用 Arrays.stream 将 int [] 转换成 IntStream。
  • 使用 IntStream 中的 boxed () 装箱。将 IntStream 转换成 Stream<Integer>
  • 使用 Stream 的 toArray,传入 IntFunction<A []> generator。这样就可以返回 Integer 数组。不然默认是 Object []。
  • 目标类型 String 数组

    数组类型转换

    String[] data = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
    Integer[] integers = Arrays.stream(tenantids).map(Integer::valueOf).toArray(Integer[]::new);

    转 List

    String[] data = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
    List<Integer> list = Arrays.stream(data).map(Integer::valueOf).collect(Collectors.toList());

    转 Set

    String[] data = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
    List<Integer> list = Arrays.stream(data).map(Integer::valueOf).collect(Collectors.toSet());