如何在Java中访问类的成员

时间:2014-11-16 21:23:13

标签: java json class member

如果我知道某个成员的属性,我可以获得其余的属性吗?

我正在创建这样的成员:

ArrayList<Events> eventList = new ArrayList<Events>();

for (int i = 0; i < elist.length(); i++){

JSONObject e = elist.getJSONObject(i);

    //store each item we want into a variable
    String id = e.getString(TAG_id);
    String event = e.getString(TAG_event);
    String eventCity = e.getString(TAG_city);

    //add the event
    eventList.add(new Event(id, event.toUpperCase(), eventCity));
}

这是班级

public class Event {

    private String id;
    private String event_name;
    private String city;

    public Event(String i, String e, String c){
        id = i;
        event_name = e;
        city = c;
    }

    public String getId(){
        return id;
    }
    public String getEventName(){
        return event_name;
    }
    public String getCity(){
        return city;
    }
    public String toString(){
        return event_name;
    }
}

因此,如果我知道课程中的哪个事件,我可以获得Id和City吗?

我到目前为止唯一想到的是:

String show = eventList.get(1).toString();

但是,如果我不知道索引怎么办?

2 个答案:

答案 0 :(得分:1)

以这种方式:

public String getEventById(List<Event> eventList, String id) {
    for (Event event : eventList) {
        if (event.getId().equals(id)) {
            return event.getEvent();
        }
    }
    return null;
}

答案 1 :(得分:0)

所以我认为你在理解各种数据结构方面遇到了一些麻烦。让我们看看我是否可以从简单开始。因此,给定一个Event实例,您可以获得以下各个字段:

Event evt = ...
System.out.println( evt.getEvent() );
System.out.println( evt.Id() );
System.out.println( evt.getCity() );

要获取各种字段,您有变量指向单个事件实例。现在看起来你有几个事件存储在ArrayList中。因此,您可能希望在所有事件中执行某些操作,在这种情况下,您需要遍历数组中的每个实例并执行以下操作:

for( Event evt : allEvents ) {
   System.out.println( evt.getId() );
   System.out.println( evt.getEvent() );
   System.out.println( evt.getCity() );
}

这会打印出allEvents ArrayList中的所有事件。您还可以编写一个方法来根据给定的事件ID查找事件。

public Event findEvent( String id, List<Event> allEvents ) {
   for( Event evt : allEvents ) {
       if( evt.getId().equals(id) ) {
          return evt;
       }
   }

   return null;
}

然后像这样使用它:

 Event evt = findEvent( "someID", allEvents );
 System.out.println( evt.getId() );
 System.out.println( evt.getCity() );
 System.out.println( evt.getEvent() );