Как добавить элемент в hashSet, который состоит из String [] - PullRequest
0 голосов
/ 30 марта 2019

У меня был вопрос, который я исследовал, но не получил ответа. Может быть, я не ищу экзаменационный термин, который мне нужен. Вот мой вопрос.

Type mapType = new TypeToken<Map<String, String>>() {
               }.getType();

Map<String, String[]> result = new Gson().fromJson(value1.get(i), mapType);
Set<String[]> setNew = result.values().stream().collect(Collectors.toSet());

Этот setNew имеет hashSet, и я получаю элементы в setNew, как и ожидалось. Приведенный выше код работает как положено, он дает мне массив String (String []) для setNew. У меня нет проблем с приведенным выше кодом, по крайней мере, я думаю, так как я получаю желаемый результат.

Теперь я хочу добавить элемент в setNew. Я пытался добавить, как вы добавляете в Set, используя метод "setNew.add", но он не позволяет, так как этот метод предназначен только для String. Параметры .add: -> setNew.add (String [] e). Я пытался преобразовать String в массив String, он работает, но все же он не позволяет мне добавить этот массив строк в мое setNew.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я нашел ответ на этот вопрос. Я сделал изменения в коде. Оригинальный код Map<String, String[]> result = new Gson().fromJson(value1.get(i), mapType);

Изменен код на Map<String, String> result = new Gson().fromJson(value1.get(i), mapType);

Изменено String[] на String

0 голосов
/ 30 марта 2019

stream() и collect() слишком сложны.Вы можете создать HashSet напрямую без потоковой передачи.

Set<String[]> setNew = new HashSet<>(result.values());

Тогда, если вы хотите добавить дополнительные String[] s, это так просто, как:

setNew.add(new String[] {"foo"});
setNew.add(new String[] {"bar", "baz"});
...