遍历类的对象

时间:2015-04-09 07:38:49

标签: java class object iteration

我创建了这个类。

public class UserData {

    private int user_Id;
    private List<String> disease_List=new LinkedList<String>();
    /*Constructor*/
    public UserData(int u_id, List<String> d_list)
    {
        this.user_Id=u_id;
        this.disease_List=d_list;
    }
}

我通过从文件中读取数据创建了大约500个对象。 现在我想搜索值。例如,如果用户输入疾病=过敏。 我想遍历所有对象并显示在疾病列表中过敏的用户。 我在互联网上搜索了这个,但没有找到任何有用的东西。

5 个答案:

答案 0 :(得分:0)

您必须在集合中添加userData对象并迭代它们并访问它的属性,例如disease_list。

例如,如果您在arrayList中添加了userData对象,则可以按以下方式进行迭代

for(UserData user:UserDataList){
        if(user.disease_list.contains("allergy") {
         //display the user details
            }
        }

答案 1 :(得分:0)

我可能误解了这个问题..但基本上你想要做的是在每个UserData对象中的disease_List中搜索某个关键字,对吗?

所以说你在疾病列表中添加了String allergy = "allergy";

为了找到这个,您需要做什么,您需要遍历sick_list实例。

for (int i = 0; i < disease_list.size(); i++) {
    if(disease_list.get(i).equals("allergy")){
        //Now you know this UserData object contains "allergy". Now you
        //can choose to break the iteration and do something with
        //the object.
    }
}

答案 2 :(得分:0)

您可以使用Lambdas表达式(使用java 8或更高版本)对列表进行排序。

public class UserData {

private int user_Id;
private ArrayList<String> diseases;
/*Constructor*/
public UserData(int u_id, ArrayList<String> d_list)
{
    this.user_Id=u_id;
    this.diseases=d_list;
}

public ArrayList filter(String disease) {
    return Arrays.stream(diseases).filter(x -> x.equal(disease)).toArray();
}

}

答案 3 :(得分:0)

Java不仅会自动列出您创建的每个对象,还需要自己创建列表。

public class UserData {

    /* This must exist somewhere */
    private static List<UserData> everyone = new LinkedList<UserData>();
    private int user_Id;
    private List<String> disease_List=new LinkedList<String>();
    /*Constructor*/
    public UserData(int u_id, List<String> d_list)
    {
        this.user_Id=u_id;
        this.disease_List=d_list;
        everyone.append(this);
    }

    /* Iterator for all the objects */
    public static Iterator<UserData> iterator() {
        return everyone.iterator();
    }
}

答案 4 :(得分:-1)

如果你想在这里迭代是一种方式

for(String disease:disease_list){
if(disease.equalsIgnoreCase("allergy")
   log.info("You find out the Result");
}

否则您可以使用contains()方法

if(disease_list.contains("allergy")){
log.info("found the disease");
}