Java 学习笔记 您所在的位置:网站首页 榆中县有几个乡镇 Java 学习笔记

Java 学习笔记

2023-07-27 02:41| 来源: 网络整理| 查看: 265

Java 学习笔记 - 数组类型互转 数组类型转换字符串数组 to (Integer、Long、Double)列表传统方式Java8 Stream方式 数组 to 数组字符串数组 to (int、long、double )数组int[]、long[]、double[] 数组互相转换int[]、long[]、double[] 数组再转回 String[] 基础类型数组 to 列表Java8 以前用乖乖 for 循环Java8 以后用 stream + boxedint数组 to 列表long数组 to 列表double数组 to 列表String数组 to 列表 String数组 to 列表列表 to 数组List to Object[]List to Integer[] 数组转 StringArrays.toStringString.joinCollectors.joiningStream 参考资料

数组类型转换

测试数据

//【字符串】切成【数组】 String[] arr = "1,2,3,4,5,6".split(","); 字符串数组 to (Integer、Long、Double)列表 传统方式

1.【String数组】转成【Long数组】 这里使用到了 Apache Commons BeanUtils 不过多介绍

//【String数组】转成【Long数组】 Long[] LongIds= (Long[]) ConvertUtils.convert(arr, Long.class);

2.【Long数组】 转 【ArrayList】

// Arrays.asList 返回固定大小的列表。 List list = Arrays.asList(LongIds); // new ArrayList 创建动态的 ArrayList ArrayList ids = new ArrayList(list ); Java8 Stream方式 List intList = Arrays.stream(arr).map(Integer::valueOf).collect(toList()); System.out.println(intList); List longList = Arrays.stream(arr).map(Long::valueOf).collect(toList()); System.out.println(longList); List doubleList = Arrays.stream(arr).map(Double::valueOf).collect(toList()); System.out.println(doubleList); 数组 to 数组 字符串数组 to (int、long、double )数组 int[] ints = Arrays.stream(arr).mapToInt(Integer::valueOf).toArray(); long[] longs = Arrays.stream(arr).mapToLong(Long::valueOf).toArray(); double[] doubles = Arrays.stream(arr).mapToDouble(Double::valueOf).toArray(); int[]、long[]、double[] 数组互相转换 // int[] 2 long[] long[] longs = Arrays.stream(ints).mapToLong(Long::valueOf).toArray(); // int[] 2 double[] double[] doubles = Arrays.stream(ints).mapToDouble(Double::valueOf).toArray(); // long[] 2 int[] int[] ints1 = Arrays.stream(longs).mapToInt(i -> (int)i).toArray(); // long[] 2 double[] double[] doubles1 = Arrays.stream(longs).mapToDouble(Double::valueOf).toArray(); // double[] 2 int[] int[] ints2 = Arrays.stream(doubles).mapToInt(i -> (int)i).toArray(); // double[] 2 long[] long[] longs2 = Arrays.stream(doubles).mapToLong(i -> (long)i).toArray(); int[]、long[]、double[] 数组再转回 String[] String[] strArr1 = Arrays.stream(ints).mapToObj(String::valueOf).toArray(String[]::new); String[] strArr2 = Arrays.stream(longs).mapToObj(String::valueOf).toArray(String[]::new); String[] strArr3 = Arrays.stream(doubles).mapToObj(String::valueOf).toArray(String[]::new); 基础类型数组 to 列表 Java8 以前用乖乖 for 循环 int[] intArr = {1, 2, 3, 4, 5, 6}; List ints = new ArrayList(); for (int i : intArr) { ints.add(i); } log.info("{}", ints); // [1, 2, 3, 4, 5, 6] Java8 以后用 stream + boxed int数组 to 列表 int[] intArr = {1, 2, 3, 4, 5, 6}; List intList = Arrays.stream(intArr).boxed().collect(Collectors.toList()); System.out.println(intList); // [1, 2, 3, 4, 5, 6] long数组 to 列表 long[] longArr = {1L, 2L, 3L, 4L, 5L, 6L}; List longList = Arrays.stream(longArr).boxed().collect(Collectors.toList()); System.out.println(longList); // [1, 2, 3, 4, 5, 6] double数组 to 列表 double[] doubleArr = {1d, 2d, 3d, 4d, 5d, 6d}; List doubleList = Arrays.stream(doubleArr).boxed().collect(Collectors.toList()); System.out.println(doubleList); // [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] String数组 to 列表 String[] arr = "1,2,3,4,5,6".split(","); List strList = Arrays.stream(arr).collect(Collectors.toList()); System.out.println(strList ); // [1, 2, 3, 4, 5, 6] String数组 to 列表 String[] arr = "1,2,3,4,5,6".split(","); // list 不可编辑。 List list = Arrays.asList(arr); System.out.println(list); // [1, 2, 3, 4, 5, 6] // 下面会报错,因为 asList 返回的是 Arrays 内部类 ArrayList 它没实现 add // ArrayList list = Arrays.asList(arr); // arrayList 不可编辑 ArrayList arrayList = new ArrayList(list); System.out.println(arrayList); // [1, 2, 3, 4, 5, 6] // Collections.addAll 一切正常 List ints = new ArrayList(); Collections.addAll(ints, arr); log.info("{}", ints); // [1, 2, 3, 4, 5, 6] 列表 to 数组 List to Object[] Object[] objects = new ArrayList(list).toArray(); System.out.println(Arrays.toString(objects)); // [1, 2, 3, 4, 5] List to Integer[] Integer[] integers = new ArrayList(list).toArray(new Integer[0]); System.out.println(Arrays.toString(integers)); // [1, 2, 3, 4, 5] 数组转 String Arrays.toString

注意两边有中括号[]

// @since 1.5 //======================= Array ============================== String[] arr = {"你好", "哈喽", "啦啦啦"}; String str1 = Arrays.toString(arr); System.out.println(str1); // [你好, 哈喽, 啦啦啦] String.join // @since 1.8 String[] arr = {"你好", "哈喽", "啦啦啦"}; //======================= Array ============================== String str3 = String.join(", ", arr); System.out.println(str3); // 你好, 哈喽, 啦啦啦 //======================= List ============================== List list = Arrays.asList(arr); String string2 = String.join(" - ", list); System.out.println(string2); // 你好 - 哈喽 - 啦啦啦 Collectors.joining // @since 1.8 //======================= List ============================== String[] arr = {"你好", "哈喽", "啦啦啦"}; List list = Arrays.asList(arr); String string1 = list.stream().collect(Collectors.joining("; ")); System.out.println(string1); // 你好; 哈喽; 啦啦啦 Stream 自定义收集器写法。 IntStream nums = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); String str = nums.collect( StringBuilder::new, StringBuilder::append, StringBuilder::append ).toString(); System.out.println(str); // 12345678910

用reduce也能实现,只是用收集器语义上更合理吧。

IntStream nums = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); String str = nums.boxed().map(String::valueOf).reduce("", String::concat); System.out.println(str); // 12345678910 需要指定分隔符可以使用:Collectors.joining IntStream nums = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); String str = nums.boxed().map(String::valueOf).collect(Collectors.joining(",")); System.out.println(str); // 1,2,3,4,5,6,7,8,9,10 参考资料

笑虾:《Java8实战》 - 读书笔记 - Stream流的基本用法 笑虾:Java 学习笔记 - 集合运算 笑虾:Java 数组 转 ArrayList 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有