Spec-Zone .ru
спецификации, руководства, описания, API
|
Set
, List
, Queue
, и Map
. Вы не уверены, какие реализации будут работать лучше всего, таким образом, Вы решите использовать реализации общего назначения, пока Вы не получаете лучшее представление, как Ваша программа будет работать в реальном мире. Какие реализации - они?Set
: HashSet
List
: ArrayList
Queue
: LinkedList
Map
: HashMap
Вопрос: Если Вы нуждаетесь в a Set
реализация, которая обеспечивает упорядоченную значением итерацию, которую class следует использовать? TreeSet
гарантии, что сортированный набор находится в возрастающем порядке элемента, сортированном согласно естественному порядку элементов или Comparator
если.Collections
class, который обеспечивает статические методы, которые работают на или наборы возврата.List
. Программа должна тогда напечатать случайные строки от файла, числа строк, напечатанных, чтобы быть определенной вторым параметром командной строки. Запишите программу так, чтобы правильно размерный набор был выделен внезапно, вместо того, чтобы быть постепенно расширенным, поскольку файл читается в. Подсказка: Чтобы определить число строк в файле, использовать java.io.File.length
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
объекты без прошедшего ввода-вывода.