检查对象的属性值java

时间:2015-07-20 21:00:12

标签: java list loops

我正在寻找一种方法来遍历对象列表中每个对象的属性,并检查特定属性的值是否与我已有的另一个值匹配。对于我的情况,两个值都是字符串,但我想知道如何检查任何类型的值。

迭代列表很简单,我很困惑如何检查属性。最好的方法是什么?

通过以下构造函数创建对象:

public Undroppable(Player nameOfPlayer, ArrayList<ItemStack> items1){
    Player pl = nameOfPlayer;
    ArrayList<ItemStack> storedHits = items1;
};

ItemStack是在我正在使用的api中创建的类型。 items1是itemstacks的arraylist。 构造函数在类中使用如下:

storedDeaths.add(new Undroppable(p, hits));

storedDeaths是创建的对象的列表。 p是一个玩家,我使用的api中的另一种类型。 Hits是我所谈论的itemstacks的arraylist。

我可以遍历对象列表来访问对象,但我不知道如何遍历每个对象来检查属性。

2 个答案:

答案 0 :(得分:0)

只需在循环中访问您的属性,并检查它是否等于您想要匹配的内容。

List<YourObject> list = new ArrayList<YourObject>();


String stringToMatch = "match"

for(int i; i<list.size(); i++){
 if(list.get(i).getStringProperty().equals(stringToMatch){
    //do something
 }
}

编辑: 你的类没有正确设置。你没有在构造函数中做任何事情。 类变量需要声明为:

public class Undroppable{
 private Player player; //this is important
 private List<ItemStack> items1; //you must declare these

 public Undroppable(Player nameOfPlayer, ArrayList<ItemStack> items1){
  this.player = nameOfPlayer;
  this.items1 = items1;
}

 public Player getPlayer(){ return this.player; } // now you can access this way
 public List<ItemStack> getItems1{return this.items1}

答案 1 :(得分:0)

考虑一下:

interface PropertyProvider<E> {

    public E getValue(); 
    public void setValue(E value);
}

class Container implements PropertyProvider<String> {

    private String value;

    @Override
    public String getValue() {
        return value;
    }

    @Override
    public void setValue(String value) {
        this.value = value;
    }
}

然后使用此方法检查ValueProviders中包含的某个属性是否与值匹配:

public static <E> boolean containsNestedProperty(Collection<PropertyProvider<E>> coll, E value) {
    boolean contains = false;

    for (PropertyProvider<E> provider : coll) {
        E item = provider.getValue();

        if (item != null && item.equals(value)) {
            contains = true;
            break;
        }
    }

    return contains;
}