关于集合的问题 javaCollection 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 S1定义的泛型是String,s1.add(s2); s2是HashSet,不是String,类型不匹配,肯定错啦.另外,克降和泛型无关,你原型是泛型的,克隆后的对象也是泛型. s1.add(s2);这里当然错了!你定义的s1集合泛型是String,这个集合这能放入String,而s2不是String类型的你确定是书上的代码吗?克隆不需要修改吧? 泛型啊亲 你定义的两个集合都是只能放String的。结果你s1.add(s2);放了一个集合进去,当然不对了! 泛型提示只是一个提示,没关系的,不写就行(默认object).如果写了,就得遵守泛型类型.public static void main(String args[]) { Set s1 = new HashSet(); Set s2 = new HashSet(); s1.add("red"); s1.add("yellow"); s1.add("green"); s2.add("red"); s2.add("yellow"); s2.add("blue"); s1.add(s2); System.out.println(s1); HashSet s3 = new HashSet(); HashSet s3Copy = (HashSet) s3.clone(); }这样就行了,不会错,只不过会有黄色下划波浪线,只是个提示,忽略它就可以了. 泛型的那个 <>可以不用考虑,可以忽略; 楼主 如果想要在一个集合中添加另一个集合的元素 可以用addAll方法,其他的关于为什么编译错误,大家前面的回答都说得比较清楚了 是由于泛型的原因 你定义的是string 就只能放string类型的数据 问题1:编译会出错的,你把泛型去了,编译可以通过。问题2:clone()返回此 HashSet 实例的浅表副本是Object。(不复制这些元素本身)你把Object再强制转化为HashSet<String>,肯定会提示你的。如果你想得到set的副本,你可以new HashSet(s1),new HashSet(s2); java的集合只是建议使用泛型并不是必须使用泛型,但是你一旦定义了泛型就必须放入该类型的对象。克隆集合的方法很多啊,建议用集合的allAll()方法。 java的集合只是建议使用泛型并不是必须使用泛型,但是你一旦定义了泛型就必须放入该类型的对象。克隆集合的方法很多啊,建议用集合的allAll()方法。这个大神说的很对, 第一个问题你已经第一泛型了Set<String> s1 = new HashSet<String>();只能放入String类型的你放的set当然出现编译错误!还有答案当然是不确定的因为set是无序的就算你把泛型去掉答案也与他给的不一定一样我就得出这个答案了:[red, green, yellow, [red, blue, yellow]] JAVA socket 怎样暂停这段程序 急求 java中的奇怪现象 菜鸟问题……CMD JAVAC 在线等个JAVA 和SQL2000 不通过连接池的问题? 通过JDBC为已存在的表创建索引的问题? JAVA应用程序中怎么样通过一个URL来获取所对应的HTML文件 做了一个个人记帐、网络日记、人际关系管理、团队事务处理的网站,欢迎访问、建议。谢谢! 我的Tomcat怎么运行不起来 ant怎么用啊?从C++晃过来之后,感觉都不是那么熟悉了。连工具都不会用,郁闷中... 菜鸟来提问~ 菜鸟求助关于在hashmap中get的问题 it公司常见java面试题汇总
这里当然错了!
你定义的s1集合泛型是String,这个集合这能放入String,而s2不是String类型的
你确定是书上的代码吗?
克隆不需要修改吧?
Set s1 = new HashSet();
Set s2 = new HashSet();
s1.add("red");
s1.add("yellow");
s1.add("green");
s2.add("red");
s2.add("yellow");
s2.add("blue");
s1.add(s2);
System.out.println(s1);
HashSet s3 = new HashSet();
HashSet s3Copy = (HashSet) s3.clone();
}这样就行了,不会错,只不过会有黄色下划波浪线,只是个提示,忽略它就可以了.
问题2:clone()返回此 HashSet 实例的浅表副本是Object。(不复制这些元素本身)你把Object再强制转化为HashSet<String>,肯定会提示你的。如果你想得到set的副本,你可以new HashSet(s1),new HashSet(s2);
这个大神说的很对,