在ArrayList中搜索并计数

时间:2014-10-07 14:11:31

标签: java arraylist

在此代码中,我想在ArrayList中搜索,但我的代码返回的结果不正确,我无法解决此问题。

ReceivedItemStructure结构:

public class ReceivedItemStructure {
    public String mLastID;
    public String mUserID;
    public String mSmsBody;
    public String mMobileNumber;
    public String mDate;
    public String mSenderName;
    public String mSmsNumber;
    public String mContactName;

public String getmLastID() {
        return mLastID;
    }
}

我的代码:

int countSMS = 0;

String smsReceivedSender = "";
String r = new JsonService(config_username, config_password, 0, 20, G.F_RECEIVE_SMS).request();

JSONArray data_array = new JSONArray(r);

for (int i = 0; i < data_array.length(); i++) {
    JSONObject json_obj = data_array.getJSONObject(i);
    String mId = json_obj.getString("id_recived_sms");

    for (ReceivedItemStructure rf:items){

        if( ! mId.equals(rf.getmLastID()) ) {
            countSMS++;
        }
    }

}

我的问题是这一行:

if( ! mId.equals(rf.getmLastID()) ) {

如果mId = 2000rf.getmLastID() = 1000count必须为++

2 个答案:

答案 0 :(得分:1)

在您的列表中循环,然后执行containsstartswith

ArrayList<String> resList = new ArrayList<String>();
String searchString = "man";

for (String curVal : list){
  if (curVal.contains(searchString)){
    resList.add(curVal);
  }
}

您可以将其包装在方法中。包含检查它是否在列表中。你也可以去开始。

答案 1 :(得分:0)

好的,请澄清请尝试调试您的代码:

int countSMS = 0;

String TAG = "Debugger";

String smsReceivedSender = "";
String r = new JsonService(config_username, config_password, 0, 20, G.F_RECEIVE_SMS).request();

JSONArray data_array = new JSONArray(r);
Log.i(TAG, "items size is " + items.size());

for (int i = 0; i < data_array.length(); i++) {
    JSONObject json_obj = data_array.getJSONObject(i);
    String mId = json_obj.getString("id_recived_sms");
    Log.i(TAG, "Trying to compare " + mId);
    for (ReceivedItemStructure rf:items){
        Log.i(TAG, "iteration step of  " + rf.getmLastID);
        if( ! mId.equals(rf.getmLastID()) ) {

            countSMS++;
            Log.i(TAG, "they are equal, count is " + countSMS);
        }
    }

}