如何在没有迭代的情况下获得hashmap的单独键和值

时间:2015-07-08 05:57:44

标签: android hashmap keyset entryset

此处键入作为字符串值列表的纬度和经度与值的差异。我想做hashmap的单独键和值 有可能吗??? 请建议我。

MainActivity.java

public void getExpandableListData() {
    Cursor cursor = databaseHelper.getLoadMoreData(count);
    cursor.moveToFirst();
    String businessName;
    String latitude;
    String longitude;
    String categoryDescription;
    double difference;
    Log.i(TAG, "cursor.getCount() :" + cursor.getCount());
    do {
        categoryDescription = cursor.getString(cursor
                .getColumnIndex("categorydesc"));
        Log.i("categoryDescription", "" + categoryDescription);
        int categoryId = cursor.getInt(cursor.getColumnIndex("CategoryId"));
        Log.i("category Id",
                "" + cursor.getInt(cursor.getColumnIndex("CategoryId")));
        listDataHeader.add(categoryDescription);
        Log.w("list Data Header", "" + listDataHeader);
        currentLocation = new Location("");
        currentLocation.setLatitude(18.5522);
        currentLocation.setLongitude(73.8956);
        List<ChildInfo> childList = new ArrayList<ChildInfo>();
        Cursor cursorChild = databaseHelper.getChildData(categoryId);
        Map.Entry<Double, List<ChildInfo>> entry;
        List<ChildInfo> list = null;
        cursorChild.moveToFirst();
        do {
            businessName = cursorChild.getString(cursorChild
                    .getColumnIndex("BusinessName"));
            phoneNumber = cursorChild.getString(cursorChild
                    .getColumnIndex("Phone"));
            categoryDescription = cursorChild.getString(cursorChild
                    .getColumnIndex("categorydesc"));
            latitude = cursorChild.getString(cursorChild

            .getColumnIndex("Latitude"));
            longitude = cursorChild.getString(cursorChild
                    .getColumnIndex("Longitude"));
            ChildInfo childInfo = new ChildInfo(businessName, phoneNumber,
                    categoryDescription, latitude, longitude);
            childList.add(childInfo);
            Location savedLocation = new Location("databaseLocation");
            savedLocation.setLatitude(Double.parseDouble(latitude));
            savedLocation.setLongitude(Double.parseDouble(longitude));
            difference = currentLocation.distanceTo(savedLocation) * (0.001);
            hashMapLocationDifference.put(difference, childList);
            hashMapLocationDifference = sortByKeys(hashMapLocationDifference);
            Log.i("sortedHashMap:", "" + hashMapLocationDifference);
            Set<Double> keySet = new LinkedHashSet<Double>();
            keySet = hashMapLocationDifference.keySet();
            entry = hashMapLocationDifference.entrySet().iterator().next();
            list = new ArrayList<ChildInfo>();
            list = entry.getValue();
            listDataChild.put(categoryDescription, list);
        } while (cursorChild.moveToNext());
    } while (cursor.moveToNext());
    cursor.close();
}  

我不希望对keyset()使用迭代或循环。如何在没有迭代的情况下使用?

2 个答案:

答案 0 :(得分:0)

您可以使用keySet和entrySet分别检索键和条目

答案 1 :(得分:0)

HashMap<Double, List<ChildInfo>> hashMap= new HashMap<Double, List<ChildInfo>>();
Set<Double> keySet=hashMap.keySet();
Set<List<ChildInfo>> valueSet=hashMap.valueSet();
//Loop
for(Double d:keySet){
    List<ChildInfo> children=hashMap.get(d);
    //continue here...
}