Java ArrayList按元素的属性过滤

时间:2011-11-30 10:21:56

标签: java arrays optimization arraylist

我有ArrayListCar个对象,我希望从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的元素属性?

谢谢!

3 个答案:

答案 0 :(得分:1)

无论如何,您必须遍历列表,检查每个条目并将其收集到另一个集合中。如果您多次执行相同的搜索,则可以选择按该条件对列表进行排序。

附注:如果carArray实际上是Car[],则您不需要在第一个循环中使用强制转换,只需执行for (Car car : carArray)。如果它是Object[],您应该重新考虑您的设计,因为在您的循环中,您假设每个条目都是Car

答案 1 :(得分:1)

我猜你在谈论一些属性,比如功能(在其他语言中可用),但在java中不可用,所以最好的方法是使用setter和getter。 所以我的建议是坚持你的代码,因为工作得很快:)

祝你好运, Arkde

答案 2 :(得分:0)

您的集setOfNames是否包含唯一值?因为如果这是Car类的实现,那么你没有覆盖equalshashCode的方法,hashSet如何确保两个对象是相同的?

我想,你必须覆盖equals和hashcode方法,以确保hashset不包含重复项。