检查属性值的对象java

检查属性值的对象java

问题描述:

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

遍历列表很简单,我很困惑如何检查属性。什么是最好的方法来做到这一点?

的目的是通过这个构造函数创建:

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

ItemStack的是,在我一起工作的API创建的类型。 items1是itemstacks的数组列表。 构造在课堂上使用这样的:

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

storedDeaths是创建的对象的列表。 p是玩家,我正在使用的api中的另一种类型。命中是我正在讨论的itemstacks的数组列表。

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

+0

真的是人吗?我在问一个我不知道答案的合法问题,我也无法找到一个答案来帮助我,并且你打算仅仅因为你比我更有经验,而这个问题对你来说毫无用处。真的吗? – DITTO

+1

这个问题令人难以置信的不清楚。请考虑编辑它,而不要使用“噪音”和一些简化的示例。还有属性?你的意思是田野吗?你错过了Java术语。 – John

+0

你是什么意思的噪音?我简化了我正在做的事,感谢我没有像其他人那样发布大量代码。通过属性我的意思是一个对象的属性。我不知道java中的术语是什么,但是javascript中的术语将是一个关键。 – DITTO

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

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

编辑: 类未设置correctly.You做的arent在构造函数中任何东西。 类变量需要被声明为这样:

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} 
+0

当你说getStringProperty,你的意思是获取,然后是属性的名称或是一种方法来获取字符串属性的值? – DITTO

+0

它是一种获取字符串属性值的方法。如果它是一个公共变量,你也可以直接获取属性,在这种情况下使用list.get(i).propertyName – discipliuned

+0

我不知道你的类是如何构造的,尝试添加你的类结构到你的文章? – discipliuned

考虑一下:

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