|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Set, List, Queue, и Map. Вы не уверены, какие реализации будут работать лучше всего, таким образом, Вы решите использовать реализации общего назначения, пока Вы не получаете лучшее представление, как Ваша программа будет работать в реальном мире. Какие реализации - они?Set: HashSetList: ArrayListQueue: LinkedListMap: HashMapВопрос: Если Вы нуждаетесь в a Set реализация, которая обеспечивает упорядоченную значением итерацию, которую class следует использовать? TreeSet гарантии, что сортированный набор находится в возрастающем порядке элемента, сортированном согласно естественному порядку элементов или Comparator если.Collections class, который обеспечивает статические методы, которые работают на или наборы возврата.List. Программа должна тогда напечатать случайные строки от файла, числа строк, напечатанных, чтобы быть определенной вторым параметром командной строки. Запишите программу так, чтобы правильно размерный набор был выделен внезапно, вместо того, чтобы быть постепенно расширенным, поскольку файл читается в. Подсказка: Чтобы определить число строк в файле, использовать чтобы получить размер файла, затем разделитесь на принятый размер средней строки. List в произвольном порядке мы будем использовать ArrayList. Мы оцениваем число строк, беря размер файла и делясь на 50. Мы тогда удваиваем то число, так как более эффективно оценить слишком высоко чем к underestmate.
import java.util.*;
import java.io.*;
public class FileList {
public static void main(String[] args) {
final int assumedLineLength = 50;
File file = new File(args[0]);
List<String> fileList =
new ArrayList<String>((int)(file.length() / assumedLineLength) * 2);
BufferedReader reader = null;
int lineCount = 0;
try {
reader = new BufferedReader(new FileReader(file));
for (String line = reader.readLine(); line != null;
line = reader.readLine()) {
fileList.add(line);
lineCount++;
}
} catch (IOException e) {
System.err.format("Could not read %s: %s%n", file, e);
System.exit(1);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {}
}
}
int repeats = Integer.parseInt(args[1]);
Random random = new Random();
for (int i = 0; i < repeats; i++) {
System.out.format("%d: %s%n", i,
fileList.get(random.nextInt(lineCount - 1)));
}
}
}
ArrayList имеет немного влияет на его производительности. Определение начальной емкости заранее, более вероятно, будет полезно, когда Ваша программа repeatly создаст большой ArrayList объекты без прошедшего ввода-вывода.