此处键入作为字符串值列表的纬度和经度与值的差异。我想做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()使用迭代或循环。如何在没有迭代的情况下使用?
答案 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...
}