我是Java的新手,经常发现我需要对Map<Key, Value>值进行排序.
由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.
有没有更简单的方法?
我读到了使用Comparator对ArrayLists进行排序,但在所有人们使用的例子中compareTo,根据一些研究,这是一个字符串的方法.
我想通过它们的一个属性对自定义对象的ArrayList进行排序:Date对象(getStartDay()).通常我会比较它们item1.getStartDate().before(item2.getStartDate())所以我想知道我是否可以这样写:
public class CustomComparator {
public boolean compare(Object object1, Object object2) {
return object1.getStartDate().before(object2.getStartDate());
}
}
public class RandomName {
...
Collections.sort(Database.arrayList, new CustomComparator);
...
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试找出可以检索HashMap中的值的顺序.下面是代码片段.
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<Integer, String> hashmap = new HashMap<Integer, String>();
hashmap.put(1, "apple" );
hashmap.put(2, "lemon" );
hashmap.put(3, "orange" );
hashmap.put(4, "banana" );
hashmap.put(5, "litchi" );
hashmap.put(6, "mango" );
hashmap.put(7, "papaya" );
System.out.println(hashmap.size());
for (String key : hashmap.values()) {
System.out.println(key);
}
}
}
Run Code Online (Sandbox Code Playgroud)
7
apple
lemon
orange
banana
litchi
mango
papaya
Run Code Online (Sandbox Code Playgroud)
值按插入顺序打印.一般来说这是真的吗?我期待值以任意顺序打印.这是使用Java 6.
我有一个像这样创建的列表变量:
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
在我的Android应用程序中,此列表已填充.
只是一个例子:
Map<String, String> map1 = new HashMap<String, String>();
map.put("name", "Josh");
...
Map<String, String> map2 = new HashMap<String, String>();
map.put("name", "Anna");
...
Map<String, String> map3 = new HashMap<String, String>();
map.put("name", "Bernie");
...
list.add(map1);
list.add(map2);
list.add(map3);
Run Code Online (Sandbox Code Playgroud)
我list用来ListView通过扩展BaseAdapter和实现各种方法来显示结果.
我的问题:我需要list根据地图的键名按字母顺序排序
问题:list根据地图的键名,按字母顺序排序的简单方法是什么?
我似乎无法绕过这个.我已将每个名称从每个名称中提取Map到一个String数组中,并对其进行排序(Arrays.sort(strArray);).但这并没有保留每个中的其他数据Map,所以我不太确定如何保留其他映射值
我需要使用HashMaps的ArrayList调用外部API,每个包含几个预定义的键值对.一个例子:
ArrayList<HashMap<String, String>> arrayListHashMap = new ArrayList<HashMap<String, String>>();
{
HashMap hashMap = new HashMap<String, String>();
hashMap.put("key", "A key");
hashMap.put("value", "B value");
arrayListHashMap.add(hashMap);
}
{
HashMap hashMap = new HashMap<String, String>();
hashMap.put("key", "B key");
hashMap.put("value", "A value");
arrayListHashMap.add(hashMap);
}
Run Code Online (Sandbox Code Playgroud)
现在我需要在"value"键的内容上对此构造进行排序.这种排序会导致"key = B key/value = A value"条目成为arrayListHashMap中的第一个条目.
任何帮助都非常感谢.
HJW