避免重复出现

时间:2019-01-17 20:12:07

标签: groovy

我有一个对象数组,定义如下:

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 :(得分:3)

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