我是Java的新手,经常发现我需要对Map<Key, Value>值进行排序.
由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.
有没有更简单的方法?
所以我是Java的新手,因此我正在通过练习,将我的一个Python程序转换为Java.
我遇到了一个问题,我试图复制行为,从python下面将只返回排序的键(按值),而不是值:
popular_numbers = sorted(number_dict, key = number_dict.get, reverse = True)
Run Code Online (Sandbox Code Playgroud)
在Java中,我做了一些研究,还没有找到一个简单的样本用于n00b,例如我自己或类似的方法.我找到了使用Guava进行排序的示例,但排序似乎返回按键排序的HashMap.
除了上述之外,我在Java中没有找到的关于Python的其他好处之一是能够轻松返回已排序值的子集.在Python中,我可以简单地执行以下操作:
print "Top 10 Numbers: %s" % popular_numbers[:10]
Run Code Online (Sandbox Code Playgroud)
在此示例中,number_dict是键值对的字典,其中键表示数字1..100,值是数字(键)出现的次数:
for n in numbers:
if not n == '':
number_dict[n] += 1
Run Code Online (Sandbox Code Playgroud)
最终结果将是这样的:
十大数字:['27','11','5','8','16','25','1','24','32','20']
为了澄清,在Java中我成功创建了一个HashMap,我已经成功检查了数字并增加了键值对的值.我现在陷入了排序并根据值返回前10个数字(键).
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("a", 4);
map.put("c", 6);
map.put("b", 2);
Run Code Online (Sandbox Code Playgroud)
期望的输出(HashMap):
c : 6
a : 4
b : 2
Run Code Online (Sandbox Code Playgroud)
我无法找到任何有关按价值降序的信息.
怎么能实现这一目标?(额外课程不是首选)
我正在尝试获取按值排序的结果 HashMap。
这是 HashMap 的键和值:
map.put("ertu", 5);
map.put("burak", 4);
map.put("selin", 2);
map.put("can", 1);
Run Code Online (Sandbox Code Playgroud)
我试图得到这样的结果:
1 = can
2 = selin
4 = burak
5 = ertu
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import java.util.*;
public class mapTers {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("ertu", 5);
map.put("burak", 4);
map.put("selin", 2);
map.put("can", 1);
Integer dizi[] = new Integer[map.size()];
Set anahtarlar = map.keySet();
Iterator t = anahtarlar.iterator();
int a = 0;
while (t.hasNext()) {
dizi[a] = map.get(t.next());
a++;
}
Arrays.sort(dizi); …Run Code Online (Sandbox Code Playgroud) 我必须创建一个程序来计算字符串中的字母,但我对此有点问题。
这是我的代码main:
Scanner sc = new Scanner(System.in);
String str;
int count;
System.out.println("Enter some text: ");
str = sc.nextLine();
char ch;
System.out.println("Letters: ");
for (ch = (char) 65; ch <= 90; ch++) {
count = 0;
for (int i = 0; i < str.length(); i++) {
if (ch == str.charAt(i) || (ch + 32) == str.charAt(i)) {
count++;
}
}
if (count > 0) {
System.out.println(ch + ": " + count);
}
}
Run Code Online (Sandbox Code Playgroud)
一切看起来都很好,但输出不应按字母顺序排列,而应按字母数降序排列。
例如,如果你输入 …
我想用java出现ArrayList<String>的次数在java中排名.像这样:如果我有
ArrayList<String>= [French, English, German, French, French, Belgium, English, Belgium]
我计算"French", "English", "Belgium",etc.出现的数字.法语出现3次,英语2次,比利时2次,德语1次.然后我想对ArrayList<String>数字的函数进行排名.
结果将是:
French 3
English 2
Belgium 2
German 1
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?如何关联整数和字符串?
如果这是重复,我道歉,但我找不到任何具体回答这一特定问题的答案.
我有一个HashMap,其中包含一个与Set值配对的字符串键.我想根据集合的长度对地图中的值进行排序.考虑:
HashMap<String, Set<String>> myMap;
Run Code Online (Sandbox Code Playgroud)
包含:
{"A", {"Dukmerriot", "King", "Pumpkin"}}
{"B", {"Steve"}}
{"C", {"Jib", "Jab", "John", "Julie"}}
{"D", {"Apple", "Amy", "Unicorn", "Charlie", "Raptor"}}
{"E", {}}
Run Code Online (Sandbox Code Playgroud)
我希望能够有效地获得列表{"D", "C", "A", "B", E"}(从最大到最小指定集合的顺序)myMap.
除了创建一个实现Set和覆盖compareTo方法的包装类之外,有没有办法根据它们的长度对一组集合进行排序?
编辑:我应该指定我不需要使用HashMap来维护这个集合.我可以使用TreeMap或其他东西,但我不确定这是否可能,因为Set没有实现Comparable.
我有一个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 ×9
hashmap ×5
sorting ×5
collections ×2
integer ×2
character ×1
dictionary ×1
foreach ×1
map ×1
string ×1