0

ここでキーは緯度と経度の差、値は文字列値のリストです。ハッシュマップのキーと値を別々にしたい。
それは可能ですか?私に提案してください。

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() に繰り返しやループを使用したくありません。繰り返しなしで使用するには?

4

2 に答える 2

0

keySet と entrySet を使用して、それぞれキーとエントリを取得できます

于 2015-07-08T06:04:13.590 に答える
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...
}
于 2015-07-08T06:43:30.507 に答える