资料整理自网上,若有错误请及时通知博主。
JAVA下数组转换为列表
java的数组一般可以分为int数组和String数组。先看下面的例子:
public static void main(String[] args) {
List<String> al = new ArrayList<>();
String[] nums = { "10", "20" };
al = Arrays.asList(nums);
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
}
运行结果是:
10
20
再看下面的一个例子:
public static void main(String[] args) {
List<int[]> al = new ArrayList<>();
int[] nums = {10, 20};
al = Arrays.asList(nums);
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
}
运行结果是:
[I@15db9742
这里就会有一个疑问了,为什么当数组是整形的时候,返回的是一个看不懂的东西,而不是我们以为的“10”和“20”呢?
事实上,在第2个例子里面,那一个看不懂的东西是al对象的物理地址,如果此时我们想得到里面的元素,不妨可以使用下面的代码:
public static void main(String[] args) {
List<int[]> al = new ArrayList<>();
int[] nums = {10, 20};
al = Arrays.asList(nums);
System.out.println(al.size());
for (int i = 0; i < nums.length; i++) {
System.out.println(al.get(0)[i]);
}
}
运行结果是:
1
10
20
首先我们用实际结果看下:al.get(index)到底输出的是什么,可以输出多少个变量?
我们打印出al对象的大小,是1,可见里面就一个量。这个量存储了这个列表的内存地址。这也是为什么后面使用al.get(0)的原因。
地址找到了,就可以跟操作数组的原理一样了,在后面加上索引就可以得到我们想要的元素了。
再看下面一个例子,如果我们想从整形数组转换为列表,然后再由这个列表转换为整形数组,该怎样操作呢?
public static void main(String[] args) {
List<int[]> al = new ArrayList<>();
int[] nums = {10, 20};
al = Arrays.asList(nums);
int[] nums2 = al.get(0);
for (int i = 0; i < nums2.length; i++) {
System.out.println(nums2[i]);
}
}
输出结果是:
10
20
原理和第2个例子一样。