# 问题和练习：实现

> 原文： [https://docs.oracle.com/javase/tutorial/collections/implementations/QandE/questions.html](https://docs.oracle.com/javase/tutorial/collections/implementations/QandE/questions.html)

## 问题

1.  您打算编写一个使用几个基本集合接口的程序：`Set`，`List`，`Queue`和`Map`。您不确定哪种实现最有效，因此您决定使用通用实现，直到您更好地了解您的程序在现实世界中的工作方式。这些是哪些实现？
2.  如果你需要一个提供有价值迭代的`Set`实现，你应该使用哪个类？
3.  您使用哪个类来访问包装器实现？

## 演习

1.  编写一个程序，将第一个命令行参数指定的文本文件读入`List`。然后程序应该从文件中打印随机行，打印的行数由第二个命令行参数指定。编写程序，以便一次性分配正确大小的集合，而不是在读入文件时逐渐扩展。提示：要确定文件中的行数，请使用 [`java.io.File.length`](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#length--) 获得文件的大小，然后除以平均线的假定大小。

[检查你的答案。](answers.html)