Избегайте дубликатов в наборе - PullRequest
0 голосов
/ 17 января 2019

У меня есть массив объектов, который определен следующим образом:

def list = [{'name':'test','grade':1,'num':1},{'name':'test1','grade':2,'num':2},{'name':'test','grade':1,'num':1}]

Я пытаюсь избежать дублирования значений num, поэтому я попробовал следующий способ:

//Set<String> studentArray = new HashSet<String>(Arrays.asList(studentList.num));

HashSet <String> studentInfo = new HashSet <String>();

studentInfo.addAll(list.num)

println("Information:"+studentInfo);

Теперь я могу видеть различные значения, но в консоли я вижу, что значение добавляется с помощью массива, подобного [1]. Как увидеть только значение?

1 Ответ

0 голосов
/ 17 января 2019

HashSet не позволяет дублировать значения. Код, который вы создали, создает набор из одного списка элементов 1, 2 и 1. Если вы напечатаете studentArray на консоли, вы увидите что-то вроде этого:

[[1, 2, 1]]

И это правильно, потому что тип построенной структуры - Set<List<Integer>>. То, как вы используете set в этом случае, не позволит добавить еще один список [1,2,1].

Если вы хотите создать набор типа [1,2], тогда вы можете разыграть studentList.num as Set.

def studentList = [[name:'test',grade:1,num:1],[name:'test1',grade:2,num:2],[name:'test',grade:1,num:1]]

def studentNums = studentList.num as Set

assert studentNums == [1,2] as Set
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...