相关疑难解决方法(0)

使用O(n log n)复杂度按值对Java HashMap进行排序

我知道这个问题已被多次询问和回答.但是几乎所有解决方案都具有O(n ^ 2)的计算复杂度.

我正在寻找O(n log n)复杂度的解决方案.有人可以建议吗?

谢谢堆,Chaitanya

java collections hashmap

1
推荐指数
1
解决办法
2777
查看次数

Android:对从 SharedPreferences 检索到的数据进行排序

我正在尝试在 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)

编辑:

但是检索到的数据与插入的顺序不同。如何获得相同的订单?

sorting android sharedpreferences

1
推荐指数
1
解决办法
2385
查看次数

未经检查的调用compareTo

背景

创建一个Map可以按值排序的.

问题

代码按预期执行,但不能干净地编译:

http://pastebin.com/bWhbHQmT

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的成员

   return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
Run Code Online (Sandbox Code Playgroud)

如何在没有任何警告的情况下将代码更改为编译(在编译时不会抑制它们-Xlint:unchecked)?

有关

谢谢!

java generics collections comparable comparator

0
推荐指数
1
解决办法
2267
查看次数

获取Hashmap前3个键

我有一个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)

java foreach integer character hashmap

0
推荐指数
1
解决办法
1599
查看次数

如何从最大到最小打印HashMap元素

我有这样的数据集:

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 hashmap

0
推荐指数
1
解决办法
240
查看次数

如何在Map Hashmap Java中对月份进行排序

当将月份作为 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)

我很苦恼,请帮忙

java

0
推荐指数
1
解决办法
452
查看次数

在值上排序树形图

可能重复:
如何在Java中的值上对Map <Key,Value>进行排序?

我有一个treemap<Integer,Float>.如何在浮点数上对地图进行排序?

有什么快捷的方法吗?或者我必须为地图写比较器?

java

-1
推荐指数
1
解决办法
1450
查看次数

如何在Java中对map.keySet()进行排序?

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 hashmap intellij-idea sortedmap keyset

-2
推荐指数
1
解决办法
64
查看次数