我使用以下代码从服务器检索数据:
String smsReceivedSender = "";
String receive_lastID = "";
String r = new JsonService(username, password, 0, 1, G.F_RECEIVE_SMS).request();
JSONArray data_array = new JSONArray(r);
JSONObject json_obj = data_array.getJSONObject(0);
receive_lastID = json_obj.getString("id_recived_sms");
smsReceivedSender = json_obj.getString("mobile_number");
我的类结构为:
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;
}
在搜索此类数据之后,我尝试从中获取项目并将其保存到新的ArrayList
中,例如:
ArrayList<String> items_array = new ArrayList<String>();
for (ReceivedItemStructure rf:items){
items_array.add(rf.getmLastID());
}
检查数据:
for (String rf:items_array){
Log.e("items_array lastID value", rf);
}
现在我想通过以下方式将 receive_lastID
搜索到 item_array array
中:
Log.e("Received lastID", receive_lastID);
if( Arrays.asList(items_array).contains(receive_lastID) ) {
countSMS++;
}
检查结果:
Log.e("Result Check: ", String.valueOf(Arrays.asList(items_array).contains(receive_lastID)));
但无论如何都会返回false
日志猫:
10-08 08:15:25.100 2817-2817/ir.tsms E/Received lastID﹕ 30360152
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30360087
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30360052
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30360015
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30359363
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30359353
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30359273
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30359195
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30354338
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30354260
10-08 08:15:25.100 2817-2817/ir.tsms E/items_array lastID value﹕ 30353823
10-08 08:15:25.100 2817-2817/ir.tsms E/Result Check:﹕ false
30360152 lastId 不在 items_array
中,必须返回 false。但如果 items_array
有或没有,总是返回 false
。
我的代码有什么问题吗?
最佳答案
items_array
是 List<String>
,当您调用Arrays.asList(items_array)
时,您通常在数组上调用它,您将获得列表的列表 List<List<String>>
,这行不通;D
尝试使用 foreach 循环来搜索列表,或者如果您使用 java 8 使用 .stream() 例如
items_array.stream().filter(o -> o.mLastID == receive_lastid).findFirst().get()
也许阅读一些关于干净代码的内容,你的公共(public)变量+ setter/getter 对我来说似乎很奇怪。
编辑:或者只使用 contains()....
关于Java数组返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26252506/