黑马程序员技术交流社区
标题: 9行代码体现集合框架中的一个小细节[分享] [打印本页]
作者: 张少威 时间: 2012-6-3 13:58
标题: 9行代码体现集合框架中的一个小细节[分享]
1 String[] strs = {"string--01", "string--02", "string--03", "string--04"};
2 List<String> strsList = Arrays.asList(strs);
3 //以下语句输出:[string--01, string--02, string--03, string--04]
4 System.out.println(strsList);
5
6 int[] ints = {2, 3, 4, 5};
7 List<int[]> intsList = Arrays.asList(ints);
8 //以下语句输出:[[I@c17164]
9 System.out.println(intsList);
10
11 Integer[] intes = {2, 3, 4, 5};
12 List<Integer> intesList = Arrays.asList(intes);
13 //以下语句输出:[2, 3, 4, 5]
14 System.out.println(intesList);
结论:
当使用Arrays工具类的asList方法将一个数组转换为列表时,若数组中的元素是引用类型,则数组中的元素就做为列表的元素;如果数组中的元素是基本类型,则数组做为列表的元素。
一句话:集合中只存放对象。
作者: 张頔 时间: 2012-6-3 22:13
求教
我运行了一下你的例子
int[] ints = {2, 3, 4, 5};
List<int[]> intsList = Arrays.asList(ints); // 在list出提示错误 怎么回事 该导的包都导了
//改成 List intesList = (List)Arrays.asList(intes);后不提示错误但是 明显不对啊
8//以下语句输出:[[I@c17164]
9System.out.println(intsList);
作者: 张少威 时间: 2012-6-3 22:42
张頔 发表于 2012-6-3 22:13
求教
我运行了一下你的例子
int[] ints = {2, 3, 4, 5};
包是不是导错啦?
应该导入的是java.util.List
作者: 张少威 时间: 2012-6-3 22:42
张頔 发表于 2012-6-3 22:13
求教
我运行了一下你的例子
int[] ints = {2, 3, 4, 5};
包是不是导错啦?
应该导入的是java.util.List
作者: 张頔 时间: 2012-6-3 22:48
import java.awt.List;
import java.util.*;//呵呵 所有有关的都导了
public class Inc
{
public static void main(String args[])
{
Integer[] intes = {2, 3, 4, 5};
List intesList = (List)Arrays.asList(intes);
//以下语句输出:[2, 3, 4, 5]
System.out.println(intesList);
}
}
//没有提示错误 但是运行结果
Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.awt.List
at Inc.main(Inc.java:8)
作者: 杜俊彪 时间: 2012-6-3 23:52
我觉得,首先,你既然想说明集合中只能存放对象,你就不应该用泛型, 如果你都指定泛型了,那肯定是你指定的泛型对象了; 不管是集合Set还是集合List都有一个add(Object obj) 方法,当你 传递的是一个引用时, 相应的集合就会指向引用所指的数据; 就上面的int[] ints = {2, 3, 4, 5} 当你用List<int[]> intsList = Arrays.asList(ints); 此时, 集合intsList就会开辟内存来存放数组ints[]的地址,就此也就指向了数组;
作者: 小小 时间: 2012-6-4 09:33
张頔 发表于 2012-6-3 22:48
import java.awt.List;
import java.util.*;//呵呵 所有有关的都导了
import java.awt.List;
把上面这个删除
作者: 张少威 时间: 2012-6-4 09:38
Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.awt.List
at Inc.main(Inc.java:8)
java.awt.List
你使用的是java.awt包的List,应该使用java.util包的List
作者: 张頔 时间: 2012-6-4 17:29
{:soso_e127:} 我晕
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |