⑴ java中的list map set中能存放不同数据类型的元素吗
相当可以,list里面实际上存放的是Object类型,所以随便放,就算你加了泛型的限定了,你也可以往里放,通过反射,想放什么放什么,集合中的泛型是给编译器看的,过了编译阶段,泛型就不存在了,所以里面的还是接受object类型.如果你放基本数据类型,比如int 会被包装成Integer 不过一样,有自动拆箱装箱.
⑵ 泛型可以保存两种数据类型吗
不能!
⑶ 一般情况下,集合中为什么要使用泛型不使用泛型的情况下,集合中的元素是什么类型
你这是两个问题:
1、使用泛型的好处
1)类型安全。泛型的主要目的就是提高Java程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设只能我们自己记或者代码注释;
2)消除强制类型转换。泛型一个附带好处是,消除代码中许多强制类型的转换。减少代码出错率,更好阅读;
3)潜在的性能收益。可以带来更好的优化可能。在泛型的初始实现中,编译器强制类型转换(没有泛型的话,程序员会指定这些强制类型转换,)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为以后的JVM可以带来更好的优化。由于泛型的实现方式,支持泛型几乎不需要JVM或类文件更改,所有工作都在编译器中完成,编译器生成的类没有泛型(和强制类型转换),只是来确保数据类型安全;
2、没有使用泛型的时候元素的类型
由于你的题目中国没有指定语言,特别说明:对于java和C#来说没有明确类型的对象都是Object。
⑷ java 集合中泛型通配符 用了之后就不能添加 元素了 为什么
首先泛型是用来约束的(或者说是规范化),泛型的本质是参数化类型,不是用来通配的(这个说法也不完全对),这个概念一定不要混淆了。
你添加的元素是String类型的,那么你的代码就得这样:
ArrayList<String>arr=newArrayList<String>();
或者:
List<String>arr=newArrayList<String>();//多态,推荐使用
再或者:
Listarr=newArrayList();
ArrayListarr=newArrList();//这两种没有用泛型,编译器会提示警告
用上面1和2方式的话,你的arr集合就只能存放String类型对象,3没有用泛型,什么类型的对象都可以存放。只是取出来的时候,会要类型转换,这个过程很容易出错。
希望我的回答能对你有所帮助,荣幸之至。
⑸ 如果用一个集合中储存不同的类型,如何使用泛型
例如:
List<object> p
定义则可,然后使用p.add()方法即可储存不用类型变量,使用时根据需要进行转换就好,如:
(int)p[i],(float)p[i],(class)p[i]等等
⑹ 在泛型list<>中存了一系列的值,怎样在取出的时候转换类型
list.Cast<T>()
⑺ java list 集合里可以存放list集合 吗就是两重 List
对于从原始collection继承来的集合类,包括Map,List,Set,Table等是可以进行相互嵌套的,所以List中的嵌套可以达到5层以上,超过5层效率开销就不好了。
⑻ java集合中 能添加不同类型的元素吗
可以,因为所有类都是Object的子类。但是这不是好的实践。如果你需要容纳不同类型的元素,应当写一个类,而不是用集合。
⑼ java中list集合存储了object元素,根据泛型进行分组
for(Object object : list) {
String str = object.toString();
if (StringUtils.isNumeric(str )) {
// 是数字
} else {
// 不是数字
}
}