我有一个对象数组,定义如下:
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]这样的数组。如何只看值?
答案 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