gpt4 book ai didi

java - 如何将带有键和值的树形图按升序排列?

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:05 26 4
gpt4 key购买 nike

所以这个程序给出了每个单词的出现次数。我需要用这些数据制作一个列表,按升序对这些单词进行排序。

import java.util.*;

public class A1E5{
public static void main(String[] args) {
// Set text in a string
String text = "Good morning. Have a good class. " +
"Have a good visit. Have fun!";

// Create a TreeMap to hold words as key and count as value
Map<String, Integer> map = new TreeMap<>();

String[] words = text.split("[\\s+\\p{P}]");
for (int i = 0; i < words.length; i++) {
String key = words[i].toLowerCase();

if (key.length() > 0) {
if (!map.containsKey(key)) {
map.put(key, 1);
}
else {
int value = map.get(key);
value++;
map.put(key, value);
}
}
}

// Display key and value for each entry
map.forEach((k, v) -> System.out.println(k + "\t" + v));
}
}

最佳答案

在java中实现Comparator接口(interface)并重写其compare方法。获取set中的map.entrySet(),将其转换为list(我们将set转换为list,因为Collections的sort方法只能接受list类型作为参数)。调用 Collections.sort 并传递列表 [即listOfentrySet] 作为参数。Collections.sort内部调用Arrays.sort,Arrays.Sort()内部调用Merge Sort。Merge sort调用Comparator接口(interface)重写的compare方法来比较key。最终listOentrySet将包含java中根据key排序的条目(键值)对。

这是一个简单的谷歌搜索,但你在这里:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;



class SortByKeyAscending implements Comparator<Map.Entry<Integer, Integer>>{

@Override
public int compare( Map.Entry<Integer,Integer> entry1, Map.Entry<Integer,Integer> entry2){
return (entry1.getKey()).compareTo( entry2.getKey() );
}
}



public class SortMapByKeyAscendingExample {

public static void main(String...a){
Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
map.put(4, 1);
map.put(2, 1);
map.put(3, 1);
map.put(5, 1);

Set<Entry<Integer, Integer>> entrySet = map.entrySet();
List<Entry<Integer, Integer>> listOfentrySet = new ArrayList<Entry<Integer, Integer>>(entrySet);

System.out.print("Before sorting by key : ");
for(Map.Entry<Integer, Integer> entry:listOfentrySet){
System.out.print(entry.getKey()+"="+entry.getValue()+" ");
}

Collections.sort(listOfentrySet, new SortByKeyAscending());


System.out.print("\nAfter sorting by key(ascending): ");
for(Map.Entry<Integer, Integer> entry:listOfentrySet)
System.out.print(entry.getKey()+"="+entry.getValue()+" ");


}
}

输出为(键值)

排序前:4=1 2=1 3=1 5=1

排序后:2=1 3=1 4=1 5=1

关于java - 如何将带有键和值的树形图按升序排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com