前言
写算法的时候,经常最后遇到需要返回int[]
甚至int[][]
简直让人吐血,虽然可以跟面试官商量一下,是否可以返回list,但是常用lambda的也需要知道。
1. List<Integer> 转 int
List<Integer> result = new ArrayList<Integer>();
return result.stream().mapToInt(Integer::valueOf).toArray();
主要记住上面的。
附加:
int[] 转List
public static void main(String[] args) {
Integer[] a = {1,2,3};
List<Integer> list = Arrays.asList(a);
int[] b = {1,2,3};
// 但是int[]怎么转List呢
// int[] 转 List<Integer>
List<Integer> list1 = Arrays.stream(b).boxed().collect(Collectors.toList());
}
2. 二维数组转list
// 二维数组
public static void main(String[] args) {
String[][] str = { { "a", "1" }, { "b", "2" }, { "c", "3" }, };
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
list.add(str[i][j]);
}
}
反正就很灵活
// 二维数组
public static void main(String[] args) {
String[][] str = { { "a", "1" }, { "b", "2" }, { "c", "3" }, };
ArrayList<String[]> list = new ArrayList<String[]>();
for (int i = 0; i < str.length; i++) {
list.add(str[i]);
// for (int j = 0; j < str[i].length; j++) {
// list.add(str[i][j]);
// }
}
System.out.println();
}
3. list转为二维数组
将list转为二维数组:(参考:https://blog.csdn.net/iteye_6967/article/details/81928592)
这种方式是可以的~
public static void main(String[] args) {
List list = new ArrayList();
String[] str1 = {"a","1"};
String[] str2 = {"b","2"};
list.add(str1);
list.add(str2);
Object[] s = (Object[])list.toArray();
String[][] aa = new String[s.length][];
int j=0;
for(int i=0;i<s.length;i++){
aa[i] = (String[])s[i];
}
//输出二维数组的值
for(int z=0;z<aa.length;z++){
for(int i=0;i<aa[z].length;i++){
System.out.println(aa[z][i]);
}
}
}