Использование двух списков излишне. Если вы знаете, что каждый почтовый индекс связан с каждой страной, вы должны создать объекты для их хранения, затем поместить эти объекты в список.
public class MyLocation {
private int zipcode;
private String country;
public MyLocation(int zipcode, String country) {
this.zipcode = zipcode;
this.country = country;
}
public int getZipcode() {
return zipcode;
}
public String getCountry() {
return country;
}
}
Кроме того, у вас есть набор данных с разделителями, поэтому вы должны воспользоваться этим! Используйте String.split()
и разделите эту точку с запятой, чтобы получить массив с обоими элементами, готовыми к извлечению.
ArrayList<MyLocation> locations = new ArrayList<>();
try {
FileReader file = new FileReader("C:\\Users\\me\\Desktop\\places.dat");
Bufferedreader r = new BufferedReader(file);
try {
String line;
String[] lineValues;
while ((line = r.readLine()) != null) {
lineValues = line.split(";");
MyLocation location = new MyLocation(Integer.valueOf(lineValues[0]), lineValues[1]);
locations.add(location);
}
} finally {
r.close();
}
} catch (IOException e) {
e.printStackTrace();
}
Кроме того, это хорошая идея, чтобы закрыть ресурс, когда вы закончите, используя его. Я отредактировал свой код, чтобы продемонстрировать один из способов сделать это.
Как уже упоминали другие, если вы хотите сортировать, вам нужно также реализовать Comparable
, но это довольно просто.
Я сказал бы максимальные 4. Что-либо выше, я думаю, должен быть помещен в классе.
И это зависит языка программирования.. В C действительно не редко видеть функции с 7 параметрами.. Однако в C#, я редко видел больше чем 5 параметров, и я лично обычно использую меньше чем 3.
// In C
draw_dot(x, y, size, red, green, blue, alpha)
// In C#
Point point(x,y);
Color color(red,green,blue,alpha);
Tool.DrawDot(point, color);
Это зависит сильно от типов аргументов. Если они - все целые числа затем 2, могут быть слишком многие. (как я помню который порядок?), Если какой-либо аргумент принимает пустой указатель, то число отбрасывает решительно.
Реальный ответ прибывает из выяснения у себя:
Я услышал, что 7 чисел также, но я так или иначе чувствую, что это происходит со времени, когда все Вы могли передать где примитивные значения.
В наше время можно передать ссылку на объект, который инкапсулирует некоторое сложное состояние (и поведение). Используя 7 из тех определенно был бы слишком много.
Моя персональная цель состоит в том, чтобы избегать использования больше чем 4.
Это варьируется от человека человеку. Лично, когда я, сразу испытываю затруднения поняв то, что вызов функции делает путем чтения вызова в коде, пора осуществить рефакторинг для снимания деформации моих серых ячеек.
Зависит от Функции также, если бы Ваша функция требует вмешательства активного пользователя или переменных, я не пошел бы мимо диапазона 7-8. Насколько среднее количество параметров для движения с, 5-6 является зоной наилучшего восприятия, по-моему. Если Вы используете больше, чем которые Вы могли бы хотеть рассмотреть объекты класса как параметры или другие меньшие функции.
Хорошо это несомненно зависело бы от того, что Ваша функция делает до, сколько считали бы "слишком многими". Однако, конечно, возможно иметь функцию с большим количеством различных параметров, которые являются опциями о том, как обработать определенные случаи в функции и перегрузки наличия к тем функциям с нормальными значениями по умолчанию для тех опций.
С распространяющимся из Intellisense (или эквивалентный в других IDE) и подсказки, показывающие комментарии от Документации XML в Visual Studio, я действительно не думаю, что существует твердый ответ на этот вопрос.
Я обычно полагаю, что, если параметры функционально связаны (например, координаты или компоненты цвета), они должны инкапсулироваться как класс для хороших мер.
Не то, чтобы я всегда следую за этим сам ;)
Поскольку меня 5.
Трудно справиться (помните имя, порядок, и т.д.), кроме того. Плюс то, Если я приезжаю, что далеко у меня есть версии со значениями по умолчанию, которые называют этого.
Быстрый ответ: Когда необходимо остановить и задать тот вопрос, у Вас есть слишком многие.
Лично мне нравится сохранять число под шесть. Если больше необходимо, то решение зависит от проблемы. Один подход должен использовать функции "метода set" для предоставления значений объекту, который в конечном счете выполнит функцию, которой Вы требуете. Другая опция состоит в том, чтобы использовать структуру, как Вы упомянули. Так или иначе Вы не можете действительно пойти не так, как надо.
Robert C. Martin (Дядя Bob) рекомендует 3 как максимум в Чистом Коде: Руководство Гибкого Мастерства программного обеспечения
У меня нет книги со мной в данный момент, но его обоснование имеет отношение один, два и, до меньшей степени, три функции аргумента, читающие хорошо и ясно показывающие цель функции.
Это, конечно, идет рука об руку с его рекомендацией очень коротких, хорошо именованных функций, которые придерживаются Единственного Принципала Ответственности.
По словам Steve McConnell в Завершенном Коде, Вы должны
Ограничьте количество параметров стандартной программы приблизительно к семи
Слишком много параметра является "Запахом Кода".
Можно разделиться на несколько методов или использовать класс для перегруппировки переменной, которые имеют что-то общее.
Помещать число для "Слишком много" - что-то очень субъективное, и зависьте своей организации и языка, который Вы используете, эмпирическое правило - то, что, если Вы не можете считать подпись своего метода и иметь идею того, что это делающий, чем Вы, мог бы иметь слишком много информации. Personnaly, я пытаюсь не пробежаться через 5 параметров.
Если необходимо спросить затем, что это - вероятно, слишком многие.