java在列表中查找具有唯一属性的对象

use*_*201 0 java

我有以下表格中的对象列表

Person object with attributes and values
name=x, state=va
name=x, state=nj
name=x, state=va
name=x, state=va
name=x, state=md
name=x, state=va
Run Code Online (Sandbox Code Playgroud)

我想找到唯一的状态值作为数组或列表.Google集合或Java是否提供此功能?或者我是否必须遍历所有对象并找到唯一的状态值?

JB *_*zet 6

是的,你必须循环.唯一值的最佳集合是Set,但如果您确实需要List或数组,则可以随后转换Set:

 Set<String> statesAsSet = new HashSet<String>();
 for (Person p : persons) {
     statesAsSet.add(p.getState());
 }

 // if yo want a list:
 List<String> statesAsList = new ArrayList<String>(statesAsSet);
 // if you want an array:
 String[] statesAsArray = statesAsSet.toArray(new String[statesAsSet.size()]);
Run Code Online (Sandbox Code Playgroud)

您应该阅读Java集合教程.这是必须知道的.