Java 学习笔记 - 数组类型互转
Java 学习笔记 - 数组类型互转
- 数组类型转换
- 字符串数组 to (Integer、Long、Double)列表
- 传统方式
- Java8 Stream方式
- 数组 to 数组
- 字符串数组 to (int、long、double )数组
- int[]、long[]、double[] 数组互相转换
- int[]、long[]、double[] 数组再转回 String[]
- 基础类型数组 to 列表
- Java8 以前用乖乖 for 循环
- Java8 以后用 stream + boxed
- int数组 to 列表
- long数组 to 列表
- double数组 to 列表
- String数组 to 列表
- String数组 to 列表
- 列表 to 数组
- List to Object[]
- List to Integer[]
- 数组转 String
- Arrays.toString
- String.join
- Collectors.joining
- Stream
- 参考资料
数组类型转换
测试数据
//【字符串】切成【数组】
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<Long> list = Arrays.asList(LongIds);
// new ArrayList 创建动态的 ArrayList
ArrayList<Long> ids = new ArrayList<Long>(list );
Java8 Stream方式
List<Integer> intList = Arrays.stream(arr).map(Integer::valueOf).collect(toList());
System.out.println(intList);
List<Long> longList = Arrays.stream(arr).map(Long::valueOf).collect(toList());
System.out.println(longList);
List<Double> 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<Integer> 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<Integer> 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<Long> 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<Double> 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<String> 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<String> list = Arrays.asList(arr);
System.out.println(list); // [1, 2, 3, 4, 5, 6]
// 下面会报错,因为 asList 返回的是 Arrays 内部类 ArrayList 它没实现 add
// ArrayList<String> list = Arrays.asList(arr); // arrayList 不可编辑
ArrayList<String> arrayList = new ArrayList<String>(list);
System.out.println(arrayList); // [1, 2, 3, 4, 5, 6]// Collections.addAll 一切正常
List<String> ints = new ArrayList<>();
Collections.addAll(ints, arr);
log.info("{}", ints); // [1, 2, 3, 4, 5, 6]
列表 to 数组
List to Object[]
Object[] objects = new ArrayList<Integer>(list).toArray();
System.out.println(Arrays.toString(objects)); // [1, 2, 3, 4, 5]
List to Integer[]
Integer[] integers = new ArrayList<Integer>(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<T> ==============================
List<String> list = Arrays.asList(arr);
String string2 = String.join(" - ", list);
System.out.println(string2); // 你好 - 哈喽 - 啦啦啦
Collectors.joining
// @since 1.8
//======================= List<T> ==============================
String[] arr = {"你好", "哈喽", "啦啦啦"};
List<String> 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
Java 学习笔记 - 数组类型互转相关推荐
- JAVA学习笔记--数组初始化
JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...
- thinking in java 学习笔记 14 类型信息
第十四章 类型信息 尼玛,刚刚看完了亚冠,恒大这样都被连扳3球,尼玛的垃圾孙祥,恨死了那个全北现代 好吧,回到学习上 运行时类型信息使得你可以再程序运行时发现和使用类型信息 本章讨论的是java如何让 ...
- Java学习笔记---字符类型
一.字符类型也算是整数类型的一种 字符类型在内存中占有2个字节,可以用来保存英文字母等字符.计算机处理字符类型时,是把这些字符当成不同的整数来看待,因此,严格说来,字符类型也算是整数类型的一种(小写a ...
- Java学习笔记 --- 字符类型
一.字符类型 字符类型可以表示单个字符,字符类型是char, char是两个字节(可以存放汉字),多个字符我们用字符串String. public class Char01 {public stati ...
- Java学习笔记#数组的初始化方式
数组的初始化方式一共有三种:静态初始化,动态初始化,默认初始化. 1 package cn.sxz.arrays; 2 /** 3 * 测试数组的三种初始化方式 4 * @author xingzhu ...
- Java学习笔记 --- 布尔类型
一.布尔类型 1.布尔类型也叫boolean类型,boolean类型数据只允许取值true和false,无null public class Bool {public static void main ...
- java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
最新文章
- 人工智能算法通俗讲解系列(二):逻辑回归
- 单例模式中,你不知道的事~~
- 【设计模式】面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )
- 87. Leetcode 343. 整数拆分 (动态规划-基础题)
- flink dataset api使用及原理
- HQ-day2 C#语言基础
- Linux文件操作命令(二)
- C++之Big Three:拷贝构造、拷贝赋值、析构函数探究
- Redis与Django中配置使用Redis
- mysql嵌套查询语句
- Allegro PCB导入网表后,PCB规则变化怎么办?
- 线下综合体-中岛店的一些思考
- 时事点评——红芯浏览器事件
- leetcode_1370. 上升下降字符串
- 疫情期间,在家办公,这几款高效远程办公协作工具解决燃眉之急
- 微信小程序聊天功能 WebSocket 实现发送文字,图片,语音以及WebSocket 常见问题解决方案
- mysql报错解决方式:1449 - The user specified as a definer (‘root‘@‘%‘) does not exist
- msp430流水灯c语言程序,MSP430单片机流水灯程序
- cmd黑客入侵命令大全
- 如何去掉“Picked up JAVA_TOOL_OPTIONS: -Djava.vendor=“Sun Microsystems Inc.“” 提示
热门文章
- buu做题笔记——[WUSTCTF2020]朴实无华[BSidesCF 2020]Had a bad day
- iOS沙盒目录中 Documents Library tmp的作用和区别
- 2017-2018-2 20155314《网络对抗技术》Exp6 信息搜集与漏洞扫描
- 哪项技术是计算机辅助外科的基础,计算机辅助外科手术计划和模拟原理和方法.pdf...
- 【洛谷 P1046】[NOIP2005 普及组] 陶陶摘苹果 题解(比较)
- 2021年3月15日:螺纹/橡胶合约 策略体验日记
- 赣州服务器系统,赣州服务器费用
- php和wordpress教程,堪称最流行强大的免费开源PHP网站程序——WordPress中文正式版...
- pythonlist是什么意思_python中的list是什么意思
- K-means算法实例