我知道这个问题已被多次询问和回答.但是几乎所有解决方案都具有O(n ^ 2)的计算复杂度.
我正在寻找O(n log n)复杂度的解决方案.有人可以建议吗?
谢谢堆,Chaitanya
我正在尝试在 Android 中存储数据。我正在使用SharedPreferences. 我正在使用以下方法检索这些数据:
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
Map<String, ?> keys = myPrefs.getAll();
for (Map.Entry<String, ?> entry : keys.entrySet()) {
Log.i("map values", entry.getKey());
//some code
}
Run Code Online (Sandbox Code Playgroud)
编辑:
但是检索到的数据与插入的顺序不同。如何获得相同的订单?
创建一个Map可以按值排序的.
代码按预期执行,但不能干净地编译:
public class SortableValueMap<K, V> extends LinkedHashMap<K, V> {
...
public void sortByValue() {
...
Collections.sort( list, new Comparator<Map.Entry>() {
public int compare( Map.Entry entry1, Map.Entry entry2 ) {
return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
}
});
...
Run Code Online (Sandbox Code Playgroud)
Comparable作为通用参数传递给Map.Entry<K, V>(V必须是Comparable?)的语法- 以便(Comparable)警告中显示的类型转换可以被删除 - 包括我.
编译器的cantankerous抱怨:
SortableValueMap.java:24:警告:[unchecked] unchecked调用compareTo(T)作为原始类型java.lang.Comparable的成员
Run Code Online (Sandbox Code Playgroud)return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
如何在没有任何警告的情况下将代码更改为编译(在编译时不会抑制它们-Xlint:unchecked)?
谢谢!
我有一个hashmap存储文本中出现的字符数.我正在尝试打印前三次出现,但打印不正确.
int max = 1000000000;
for (int i = 1; i <= 3; i++) {
for (Character key : list.keySet()) {
if (list.get(key) < max) {
max = list.get(key);
System.out.println(i + ": " + key + " " + list.get(key));
break;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有这样的数据集:
water, 5
eggs, 3
juice, 7
bread, 4
Run Code Online (Sandbox Code Playgroud)
我保存所有这些
HashMap<String, Integer> dataSet = new LinkedHashMap<String,Integer>();
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个函数来打印从最大整数到最小的元素:
juice, 7
water, 5
bread, 4
eggs, 3
Run Code Online (Sandbox Code Playgroud)
我认为最简单的方法是创建一个HashMap数据集的副本,然后我必须运行HashMapCopy,找到最大值,打印最大元素并从列表中删除它.
private static void printMaxToMin(){
dataSetCopy = new LinkedHashMap<String,Integer>(dataSet);
}
Run Code Online (Sandbox Code Playgroud)
如何运行所有列表,找到最大值,每次打印具有最大值的元素对然后删除它?
当将月份作为 Java 哈希映射的键时,我遇到了麻烦。有人能帮我吗?
我想显示:{一月=0.0,二月=0.0,三月=0.0,四月=0.0}
但是,代码的结果是:{March=0.0, January=0.0, February=0.0, April=0.0}
这是我的代码..
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Double> capitalCities = new HashMap<String,Double>();
capitalCities.put("January", 0.0);
capitalCities.put("February", 0.0);
capitalCities.put("March", 0.0);
capitalCities.put("April", 0.0);
System.out.println(capitalCities);
}
}
Run Code Online (Sandbox Code Playgroud)
我很苦恼,请帮忙
我有一个treemap<Integer,Float>.如何在浮点数上对地图进行排序?
有什么快捷的方法吗?或者我必须为地图写比较器?
public class MapKeyExample {
public static void main(String[] args){
//Initializing a Map of type HashMap
Map<Integer, String> map = new HashMap<>();
Set<Integer> s = new HashSet<>();
map.put(1, "One");
map.put(3, "Three");
map.put(5, "Five");
map.put(7, "Seven");
map.put(9, "Nine");
System.out.println(map);
s = map.keySet();
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
现在的输出是
{1=One, 3=Three, 5=Five, 7=Seven, 9=Nine}
[1, 3, 5, 7, 9]
Run Code Online (Sandbox Code Playgroud)
的预期输出为:
[1, 5, 3, 9, 7]
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何将其修改为Linkedhashmap或treemap吗?非常感谢。
java ×7
hashmap ×4
collections ×2
android ×1
character ×1
comparable ×1
comparator ×1
foreach ×1
generics ×1
integer ×1
keyset ×1
sortedmap ×1
sorting ×1