题目1:创建一个名为Gerbil的类,该类拥有一个整数域gerbilNumber,通过构造器初始化gerbilNumber。创建方法hop()显示该对象的gerbilNumber,以及“is hopping.” 创建一个ArrayList,并将Gerbil对象添加到该List中。用get()方法遍历List中所有的Gerbil对象,并调用hop()方法。
解答1:
import java.util.*; class Gerbil{ private int gerbilNumber; public Gerbil(int number){ gerbilNumber = number; } public void hop(){ System.out.println("Gerbil "+gerbilNumber+" is hopping."); } } public class Exercise1{ public static void main(String[] args){ List<Gerbil> gerbils = new ArrayList<Gerbil>(); for(int i = 0; i < 5; i++){ gerbils.add(new Gerbil(i)); } for(int i = 0; i < gerbils.size(); i++){ gerbils.get(i).hop(); } } } /* output Gerbil 0 is hopping. Gerbil 1 is hopping. Gerbil 2 is hopping. Gerbil 3 is hopping. Gerbil 4 is hopping. */
分析:
- ArrayList对象被向上转型为List接口。在使用Java容器类时,大部分情况下只需要和接口打交道,只需要在创建容器类对象时指明对象类型。
- List可以简单看作是具有自动扩容功能的数组。向List中添加新元素用add()方法,获取元素用get()方法。
- List接口的具体实现包括ArrayList和LinkedList。
- List和List<T>的区别在于编译时是否进行类型校验。
题目2:实现一个存储整形元素的Set,加入随机整数,演示Set的元素不能重复。
解答2:
import java.util.*; public class Exercise2{ public static void main(String[] args){ Set<Integer> integers = new HashSet<Integer>(); Random rand = new Random(47); int num; for(int i = 0; i < 10; i++){ num = rand.nextInt(6); System.out.print(num+" "); integers.add(num); } System.out.println(); for(int i : integers) System.out.print(i+" "); } } /* output 2 5 1 5 1 5 4 2 0 1 0 1 2 4 5 */