Java数组返回错误值

标签 java android

我使用以下代码从服务器检索数据:

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_arrayList<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/

相关文章:

java - 如何从flex向java套接字服务器发送AMF格式的数据?

Android Sqlite 数据库组建

android - 从最近和历史中排除 Activity

java - 安卓光束 : suppress "Tab to beam"

javascript - 从 DIV 元素中获取值

java - 在 build.xml 中设置 ANT CLASSPATH

java - 不活动后调用 java.beans.Introspector.getBeanInfo 时出现性能问题

java - 在android中使用公历获取当前的儒略日数

java - 仅包含整数的对象的哈希码

android其他activity点击返回键到listview,listview项无法在选项卡下点击