Android:获取整个数组的值/键位于ArrayList <hashmap <string,string =“”>&gt; </hashmap <string,>

时间:2014-09-07 21:28:52

标签: java android arrays arraylist

我试图从arraylist

中的第三个数组中获取v8
String[][] test = {
                    {"v1","v2","v3","v4","v5","v6","v7"},
                    {"v1","v2","v3","v4","v5","v6","v7"},
                    {"v1","v2","v3","v4","v5","v6","v7", "v8"}
                  };

ArrayList<String[]> test2= new ArrayList<String[]>(Arrays.asList(test));
Log.e("v1: ", "" + test2.get(0));

for (int j = 0; j <= test2.size(); j++) {
    for (String[] arrays: test2) {
        for (String string2 : arrays) {
            if (string2.equalsIgnoreCase("v8")) {
                Log.e("LOOOOOOOOOG", "" + test2.indexOf("v8")); // 3
            }else {
                Log.e("LOOOOOOOOOG", "Cant find it!!");
            }
        }
    }
}

我该怎么做?

我目前只得-1或者不能找到它!

我正在尝试解决上述问题以解决以下HashMap问题。

public static void updateJSONdata() {
    mEmailList = new ArrayList<HashMap<String, String>>();
    JSONParser jParser = new JSONParser();
    JSONObject json = jParser.getJSONFromUrl(READ_EMAILS_URL);

    try {
        mEmails = json.getJSONArray("info");


        // looping through all emails according to the json object returned
        for (int i = 0; i < mEmails.length(); i++) {
            JSONObject c = mEmails.getJSONObject(i);

            // gets the content of each tag
            String email = c.getString(TAG_EMAIL);
            String firstName = c.getString(TAG_FNAME);
            String lastName = c.getString(TAG_LNAME);
            String address = c.getString(TAG_ADDRESS);
            String phoneNumber = c.getString(TAG_PHONE);
            String city = c.getString(TAG_CITY);
            String state = c.getString(TAG_STATE);
            String zip = c.getString(TAG_ZIP);

            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();
            map.put(TAG_EMAIL, email);
            map.put(TAG_FNAME, firstName);
            map.put(TAG_LNAME, lastName);
            map.put(TAG_ADDRESS, address);
            map.put(TAG_PHONE, phoneNumber);
            map.put(TAG_CITY, city);
            map.put(TAG_STATE, state);
            map.put(TAG_ZIP, zip);

            // adding HashList to ArrayList
            mEmailList.add(map);

            for (HashMap<String, String> maps : mEmailList){
                 for (Entry<String, String> mapEntry : maps.entrySet()){
                    String key = mapEntry.getKey();
                    String value = mapEntry.getValue();

                    if (value.equals(passedEmail)) {
                        Log.e("Is this email in the database?", value + " Is in the database!!!");                          
                        int index = map.get(key).indexOf(value);
                        Log.e("mEmailList: ", "" + mEmailList);

//                          String[] test = mEmailList.indexOf(value);

                        fullName = mEmailList.get(index).get(TAG_FNAME) + 
                                          " " + 
                                          mEmailList.get(index).get(TAG_LNAME);

                        mPhoneNumber = mEmailList.get(index).get(TAG_PHONE);

                        mAddress = mEmailList.get(index).get(TAG_ADDRESS) + " " + 
                                          mEmailList.get(index).get(TAG_CITY) + " " + 
                                          mEmailList.get(index).get(TAG_STATE) + " " + 
                                          mEmailList.get(index).get(TAG_ZIP);
                        }
                    }

                 }
            }
        } catch (JSONException e) {
        e.printStackTrace();
        }
    }

2 个答案:

答案 0 :(得分:0)

由于

,您获得了-1
test2.indexOf("v8")

ArrayList test2包含数组String[],它不包含"v8"。例如,test2包含{ "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8" },但不包含"v8"

注意:方法String#indexOf()ArrayList#indexOf()不同,因此您应该在使用它们之前阅读它们的规范。

答案 1 :(得分:0)

您希望列表中的索引包含具有特定电子邮件地址作为其中一个值的地图。为此,您需要在列表中调用indexOf,然后传递给Map

类似于:mEmailList.indexOf(map)

正在做的是搜索另一个字符串中第一次出现的子字符串的索引。这不会在列表中给你一个索引。

此外,您似乎将创建地图列表的代码与搜索列表中的特定电子邮件的代码混合在一起。