我有ArrayList
个Car
个对象,我希望从ArrayList
获取所有唯一名称String
或仅Car
个对象符合这个标准。
EG:
public class Car {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
现在我的carArray
包含了很多Car
个对象。
为了获得这样的独特名称,我正在做这样的事情:
Set<String> setOfNames = new HashSet<String>();
for (Car car : carArray) {
setOfNames.add(car.getName());
}
for (String name : setOfNames) {
System.out.println(name);
}
是否有更好/更快的方法来过滤ArrayList的元素属性?
谢谢!
答案 0 :(得分:1)
无论如何,您必须遍历列表,检查每个条目并将其收集到另一个集合中。如果您多次执行相同的搜索,则可以选择按该条件对列表进行排序。
附注:如果carArray
实际上是Car[]
,则您不需要在第一个循环中使用强制转换,只需执行for (Car car : carArray)
。如果它是Object[]
,您应该重新考虑您的设计,因为在您的循环中,您假设每个条目都是Car
。
答案 1 :(得分:1)
我猜你在谈论一些属性,比如功能(在其他语言中可用),但在java中不可用,所以最好的方法是使用setter和getter。 所以我的建议是坚持你的代码,因为工作得很快:)
祝你好运, Arkde答案 2 :(得分:0)
您的集setOfNames
是否包含唯一值?因为如果这是Car
类的实现,那么你没有覆盖equals
和hashCode
的方法,hashSet如何确保两个对象是相同的?
我想,你必须覆盖equals和hashcode方法,以确保hashset不包含重复项。