第4关:泛型
- 任务要求
- 参考答案
- 评论198
任务描述
本关任务:使用泛型创建集合对象。
相关知识
为了完成本关任务,你需要掌握: 1.什么是泛型;
2.如何使用泛型。
什么是泛型
什么是泛型呢?简单的来说,泛型可以理解为:类型参数,那什么又是类型参数呢?
我们知道一个方法void hello(String name)
如果指定了一个字符串类型的参数,那方法的调用者就只能传递String
类型的参数才能正确的使用这个方法了,否则就报错,其实泛型也是一样,只不过在这里泛型用在集合上,即指定集合中只能放某一种类型的元素。
你要往ATM
机中存钱,就只能放毛爷爷,而不能放冥币,这就是泛型,指定只能用一种类型。
如何使用泛型
泛型使用的是一对尖括号定义的,如:List<String>
指定的就是在List
集合中只能放String
类型的数据。
接下来我们来一个对比评测,看一看使用泛型和不使用泛型的区别。
不使用泛型:
List list1 = new ArrayList();
list1.add("www.educoder.net");
String str1 = (String)list1.get(0);
使用泛型:
List<String> list2 = new ArrayList<String>();
list2.add("www.educoder.net");
String str2 = list.get(0); //可以发现在这里我们不用强转数据类型了
当然泛型不仅仅只有这么一点用途,在开发中处处可见泛型,在之后的章节中我们会更深一步的了解。
可能你会有疑问,为什么我要使用泛型啊,使用泛型有什么好处呢? 答:好处如下:
-
类型安全,通过知道使用泛型定义的变量的类型限制,编译器可以更有效地提高Java程序的类型安全;
-
消除强制类型转换,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。所有的强制转换都是自动和隐式的;
-
提高性能。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
-
创建一个只能存储
String
类型数据的List
集合; -
将程序输入的数据存入
List
集合中; -
输出集合中所有的数据。
提示:list.size()
方法可以获取集合的长度。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
测试输入: 张三
李四
王五
预期输出: 集合的第1个数据为:张三
集合的第2个数据为:李四
集合的第3个数据为:王五
package step4;
import java.util.*;
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//程序会输入三次数据
/********** Begin **********/
List<String> list= new ArrayList<String>();
//String input = sc.nextLine();
for(int i=1;i<=3;i++){
list.add(sc.nextLine());//nextLine()方法用于读取输入中的下一行
}
//list.add(input);
//list.add(sc);需要将Scanner对象中的输入转换为String类型再添加进入集合
for(int i = 0;i < list.size() ;i++){
System.out.println("集合的第" + (i+1) +"个数据为:" + list.get(i));
}
/********** End **********/
}
}