Java如何优雅地实现数组集合的相互转换
String数组转int数组
String一维数组转int一维数组(String[] to int[])
【问题】将input = ["10", "1001", "11111", "99999"]
转为一维int型数组
【方法】使用stream().mapToInt()
+ IntStream.toArray()
public static void strToIntArray() {
String[] input = new String[] {
"10", "1001", "11111", "99999"
};
int[] ints = Arrays.stream(input).mapToInt(Integer::parseInt).toArray();
}
String一维数组转int二维数组(String[] to int[][])
【问题】将input = ["10010", "01101", "11111", "00000"]
转为二维int型数组
【方法】使用stream().map().toArray()
public static void main() {
String[] input = new String[] {
"10010",
"01101",
"11111",
"00000"
};
int[][] ints = Arrays.stream(input).map(s -> {
int[] arr = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
arr[i] = s.charAt(i);
}
return arr;
}).toArray(int[][]::new);
System.out.println();
}
List转Map
【问题】将一个List<Object>对象转为Map<id, Object>,其中List是类似如下结构:
public class Book {
private String id;
private String name;
// 其他字段...
}
【方法】stream().collect(Collectors.toMap(..))
+ Function.identity()
public static void listToMap(List<Book> list) {
Map<String, Book> map = list
.stream()
.collect(Collectors.toMap(Book::getId, Function.identity()));
}