Можно ли применять в Map двойной ключ?

319
26 ноября 2016, 19:15

Например, Map<String*, Integer> map = new TreeMap<String, Integer>();, там где * можно поставить < <String,String>, Integer > например?

2.Для чего нужны одноэлементные коллекции? Первый раз слышу.Гугл мало информации дает.

Answer 1

Зависит от конкретной реализации Map. У TreeMap обязательным требованием для ключа является реализация интерфейса Comparable. Соответственно, можно определить собственный класс, имеющий два поля типа String и реализующий Comparable, а потом использовать объекты этого класса в качестве ключа. Ещё проще использовать HashMap вместо TreeMap. Ключом HashMap может быть любой хэшируемый объект, поэтому можно использовать, например, List, содержащий пару строк.

List<String> key1 = new ArrayList<>();
key1.add("qqq");
key1.add("www");
List<String> key2 = new ArrayList<>();
key2.add("eee");
key2.add("rrr");
Map<List, Integer> map = new HashMap<>();
map.put(key1, 1);
map.put(key2, 2);

Вторая часть вопроса слишком общая. Причём как определение "одноэлементная коллекция" слишком размытое, так и область её применения очень обширна. Например, какой-то метод ждёт в качестве аргумента коллекцию, а вам надо передать только один элемент.

List<String> list = new ArrayList<>();
list.add("abc");
list.add(null);
list.add("def");
list.removeAll(Collections.singletonList(null));
READ ALSO
как скрыть окно ошибки Winrar в Java

как скрыть окно ошибки Winrar в Java

Есть класс Java, который распаковывает архивы в каталогеЕсли архив поврежден, то открывается окно winrar с содержимым "Архив поврежден или имеет...

268
Что за методы removeAll и retainAll?

Что за методы removeAll и retainAll?

В гугле наткнулся на только такое описание:

833
Как отправить json запросом post?

Как отправить json запросом post?

Добрый день, подскажите пытаюсь отправить json для этого использую данную конструкцию

374
Как повторить ввод с клавиатуры, при исключении

Как повторить ввод с клавиатуры, при исключении

Подскажите как, повторять ввод строки, если ее нельзя преобразовать в тип int или double

353