Java语言中下面哪个是编译正确的()A.List<String>list=new ArrayList<Integer>(); B.Map<String.Object>map=newHash<String.String>();
时间: 2024-03-12 14:40:27 浏览: 170
在Java语言中,下面的选项是编译正确的:
A. List<String> list = new ArrayList<Integer>();
这是因为Java中的泛型是类型安全的,编译器会在编译时进行类型检查。在这个选项中,虽然ArrayList的类型参数是Integer,但是它可以被赋值给List<String>,因为Integer是String的子类。编译器会自动进行类型转换,将Integer转换为String。
另一方面,选项B是错误的:
B. Map<String, Object> map = new Hash<String, String>();
这是因为在创建HashMap对象时,类型参数必须与Map接口的类型参数一致。在这个选项中,Hash<String, String>的类型参数与Map<String, Object>不匹配,因此会导致编译错误。
相关问题
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test3 { public static void main(String[] args){ List<Student> list = new ArrayList<Student>(); Student s1 = new Student(001,"张三",18,"男"); Student s2 = new Student(002,"李四",19,"男"); Student s3 = new Student(003,"赵九",17,"女"); list.add(s1); list.add(s2); list.add(s3); System.out.println("请输出每个学生的信息:"); for(Student h : list){ System.out.println(h.getId() +"," + h.getName() +","+ h.getAge()+","+h.getSex()); } Map<Integer,Student> map = new HashMap<Integer,Student>(); StudentEntry se1 = new StudentEntry(s1.getId(),s1); StudentEntry se2 = new StudentEntry(s2.getId(),s2); StudentEntry se3 = new StudentEntry(s3.getId(),s3); map.put(se1.getKey(),se1.getStu()); map.put(se2.getKey(),se1.getStu()); map.put(se3.getKey(),se1.getStu()); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey() +","+ m.getValue()); } } }请帮我修改
修改后的代码如下:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test3 {
public static void main(String[] args){
List<Student> list = new ArrayList<Student>();
Student s1 = new Student(001,"张三",18,"男");
Student s2 = new Student(002,"李四",19,"男");
Student s3 = new Student(003,"赵九",17,"女");
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("请输出每个学生的信息:");
for(Student h : list){
System.out.println(h.getId() +"," + h.getName() +","+ h.getAge()+","+h.getSex());
}
Map<Integer,Student> map = new HashMap<Integer,Student>();
StudentEntry se1 = new StudentEntry(s1.getId(),s1);
StudentEntry se2 = new StudentEntry(s2.getId(),s2);
StudentEntry se3 = new StudentEntry(s3.getId(),s3);
map.put(se1.getKey(),se1.getStu());
map.put(se2.getKey(),se2.getStu()); // 修改se1.getStu()为se2.getStu()
map.put(se3.getKey(),se3.getStu()); // 修改se1.getStu()为se3.getStu()
for(Map.Entry<Integer, Student> m : map.entrySet()){ // 添加泛型
System.out.println(m.getKey() +","+ m.getValue().getName()); // 输出学生姓名
}
}
}
```
修改的内容如下:
1. 第22行、23行、24行,将重复使用的`se1.getStu()`修改为`se2.getStu()`和`se3.getStu()`,修正了map中存储的学生信息不正确的问题。
2. 第26行,添加了泛型,修正了编译警告。
3. 第27行,输出学生姓名,修正了输出不完整的问题。
阅读全文