Есть простой класс:
public class Person {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
}
Есть еще один класс:
public class Item
}
ГДЕ ПРАВДА???
И сама реализация классов:
public class Main {
public static void main(String[] args) {
Set
set.add(new Item
Iterator
while (iter.hasNext()) {
System.out.println(iter.next());
}
Map
map.put(1, new Person(12, "anton"));
map.put(2, new Person(42, "valera"));
map.put(3, new Person(41, "vova"));
Iterator iter1 = map.entrySet().iterator();
while (iter1.hasNext()) {
System.out.println(iter1.next());
}
}
}
Ответ
Это принципиально разные структуры данных и используются они для разных целей.
Set - это множество, то самое математическое множество. И соответственно использовать его надо как множество, т.е. хранить набор уникальных элементов.
Map - это ассоциированный массив, который хранит пары ключ-значение, где ключ должен быть уникальным, а значение нет.
Соответственно выбор правильной структуры надо делать на основе того какие действия над этими данными вы собираетесь делать. Если только хранить набор уникальных значений и проверять, что такое значение уже есть в структуре данных, то это Set. Если вам необходимо периодически искать значение по ключу(например по ИД), то это Map
Если же вам надо хранить просто список объектов и периодически проходить по всем элементам этого списка(как в ваших примерах), то надо использовать List
Относительно вопроса о временах операций, есть такие замечательные ссылки, где все хорошо описано
для Java: https://github.com/benblack86/java-snippets/blob/master/resources/java_collections.pdf
для Абстракций: http://bigocheatsheet.com/
Все они приведены в терминах Big-O нотаций, что это в принципе такое, можно почитать тут
Комментариев нет:
Отправить комментарий