Дополнительно
Ява - как создать новую запись (ключ, значение)
Я'd, как, чтобы создать новый элемент, аналогично утиль.Карте.Запись
, который будет содержать ключевые структуры`,
значение`.
Проблема в том, что я могу'т инстанцировать карты.Запись, потому что она'с интерфейсом.
Кто-нибудь знает, как создать новый универсальный ключ/значение объекта на карте.Запись?
264
10
Там'ы
публичный статический класс AbstractMap.SimpleEntry<K,V>
. Дон'т пустьабстрактное
часть имени ввести вас в заблуждение: это на самом деле НЕ являетсяабстрактное
класс (но ее верхнего уровняAbstractMap
есть).Тот факт, что она'ы
статический вложенный класс означает, что вы _DON'быть, с необходимостью включающего
AbstractMap` экземпляр, чтобы инстанцировать его, что-то вроде этого компилируется нормально:Как отмечалось в другой ответ, гуава также имеет удобный статический метод фабрики
Maps.immutableEntry
, которые вы можете использовать.Вы сказали:
Что's не совсем точно. Причина, почему вы можете'т инстанцировать его напрямую (т. е. с "новым") потому, что он'ы
Map интерфейс.Запись
.Предостережение и Совет
Как отмечается в документации,
AbstractMap.SimpleEntry
это `@с 1.6, так что если вы'вновь застрял на 5.0, потом он's не доступны для вас.Искать другого известного класса, что реализуется карте.Запись`, вы можете перейти непосредственно к javadoc. С с Java 6 версия
К сожалению, 1.5 версия не содержит каких-либо известному классу исполнителей, которые вы можете использовать, так что вы можете быть застрял с реализации собственных.
Вы можете просто реализовать карты.Запись<К в>` интерфейс себя:
И затем использовать его:
Попробовать Maps.immutableEntry от фейхоа
Это имеет преимущество того, чтобы быть совместимым с Java 5 (в отличие от `AbstractMap.SimpleEntry, по которым требуется Java 6.)
Пример AbstractMap.SimpleEntry:
Создать:
Добавьте строки:
Выборка строк:
Необходимо распечатать:
Это's хорошо для определения границ графической структуры. Как те между нейронами в вашей голове.
Начиная с Ява 9, появился новый способ утилиты, позволяющие создать неизменяемый запись
карта#запись(объект, объект)
.Вот простой пример:
Как это неизменным, вызова метода setValue
бросит
возникновению unsupportedoperationexception. Другие ограничения на то, что он не является сериализуемым и
нульв качестве ключа или значения запрещено, если это не приемлемо для вас, вам нужно будет использовать [
AbstractMap.SimpleImmutableEntry][2] или [
AbstractMap.SimpleEntry`]3 вместо этого.Примечание: Если ваша потребность заключается в создании непосредственно с "карта" с 0 до 10 (ключ, значение) пары, вместо этого можно использовать методы типа
карте.(к ключ1, значение1 в, ...)
.Вы могли бы пойти с: Карты.Запись на<строка, string> Ен= карты.immutableEntry(ключ, значение);`
Почему Карте.Запись`? Я думаю, что-то типа ключ-значение пары, пригодный для дела.
Используйте
Ява.утиль.AbstractMap.SimpleImmutableEntry " или " Ява.утиль.AbstractMap.SimpleEntry
орг."Апач".общин.lang3.кортеж.Пара
реализуетЯва.утиль.Карте.Запись
, а также может использоваться автономно.Также как и другие упомянутые гуава'ы
ком.Гугл.общие.собираем.Карты.immutableEntry(К, в)
делает трюк.Я предпочитаю
пара
для пара его свободно`.(Л, Р) синтаксис.Я определил родовой пары классов, которые я использую все время. Это'ы большой. В качестве бонуса, определив статический метод фабрики (пара.создать) я только писать аргументы типа вдвое реже.
Если вы с помощью Clojure, у вас есть еще один вариант: