Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
Collection
,因此位于其自己的树的顶部。这个接口的名称是什么? Map
<E>
语法声明,该语法告诉你它是泛型的。声明 Collection
实例时,指定它将包含的对象类型有什么好处? Set
Collection
List
Queue
Map
Deque
List
的元素。
for
语句或迭代器迭代 List
。
import java.util.*; public class Ran { public static void main(String[] args) { // Get and shuffle the list of arguments List<String> argList = Arrays.asList(args); Collections.shuffle(argList); // Print out the elements using JDK 8 Streams argList.stream() .forEach(e->System.out.format("%s ",e)); // Print out the elements using for-each for (String arg: argList) { System.out.format("%s ", arg); } System.out.println(); } }
FindDups
示例并将其修改为使用 SortedSet
而不是 Set
。指定 Comparator
,以便在排序和标识集合元素时忽略大小写。 import java.util.*; public class FindDups { public static void main(String[] args) { Set<String> s = new HashSet<String>(); for (String a : args) s.add(a); System.out.println(s.size() + " distinct words: " + s); } }
List<String>
并将 String.trim
应用于每个元素。
for
语句不允许你修改 List
。使用 Iterator
类的实例可以删除元素,但不能替换现有元素或添加新元素。这留下了 ListIterator
:
import java.util.*; public class ListTrim { static void listTrim(List<String> strings) { for (ListIterator<String> lit = strings.listIterator(); lit.hasNext(); ) { lit.set(lit.next().trim()); } } public static void main(String[] args) { List<String> l = Arrays.asList(" red ", " white ", " blue "); listTrim(l); for (String s : l) { System.out.format("\"%s\"%n", s); } } }
Set
,List
,Queue
和 Map
。对于以下四个分配中的每一个,指定四个核心接口中哪一个最适合,并解释如何使用它来实现分配。 List
。通过选择 0
和 size()-1
之间的数字来选择随机员工。Set
。实现此接口的集合不允许多次输入相同的元素。Map
,其中键是名字,每个值是具有该名字的员工数量。Queue
。调用 add()
将员工添加到等待列表,然后 remove()
移除它们。