Java 检查对象的属性值

Java 检查对象的属性值,java,list,loops,Java,List,Loops,我正在寻找一种方法来循环遍历对象列表中每个对象的属性,并检查特定属性的值是否与我已有的另一个值匹配。在我的例子中,两个值都是字符串,但我想知道如何检查任何类型的值 遍历列表很简单,但我不知道如何检查属性。最好的方法是什么 对象是通过此构造函数创建的: public Undroppable(Player nameOfPlayer, ArrayList<ItemStack> items1){ Player pl = nameOfPlayer; ArrayList<I

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

遍历列表很简单,但我不知道如何检查属性。最好的方法是什么

对象是通过此构造函数创建的:

public Undroppable(Player nameOfPlayer, ArrayList<ItemStack> items1){
    Player pl = nameOfPlayer;
    ArrayList<ItemStack> storedHits = items1;
};
StoredDaths是所创建对象的列表。p是一个播放器,是我正在使用的api中的另一种类型。Hits是我刚才提到的项目堆栈的数组列表


我可以循环浏览对象列表以访问对象,但我不知道如何循环浏览每个对象以检查属性。

只需在循环中访问您的属性,并检查它是否与您想要匹配的属性相同

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}
考虑这一点:

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;
}

真的吗?我问的是一个合法的问题,我不知道答案,我也找不到任何有助于我的答案,而你会投票否决这个问题,仅仅因为你比我更有效率,而这个问题对你毫无用处?真的吗,伙计们?这个问题非常不清楚。考虑编辑它没有噪声和一些简化的例子。还有房地产?你是说田地吗?你误用了java术语。你说的噪音是什么意思?我简化了我正在做的事情,感谢我没有像其他人一样发布大量代码。我所说的属性是指对象的属性。我不知道java中正确的术语是什么,但javascript中的术语应该是键。当你说getStringProperty时,你是指获取属性的名称,还是指获取字符串属性值的方法?它是获取字符串属性值的方法。如果属性是公共变量,也可以直接获取该属性,在这种情况下,请使用list.geti.propertyNameI我不知道类的结构,请尝试将类结构添加到帖子中?我在帖子中添加了详细信息,如果需要,可以添加更多。getStringProperty似乎不起作用。表示方法“getstringproperty对于type object是未定义的。”请考虑阅读有关对象和类的Java教程,以正确掌握该语言
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;
}