有一组数据,格式如下:
词 词频
你好 1
问题 4
数据 2
详细 16
由于还要进行其他操作,我把它存储在Hashmap中,现在想按照词频的降序排序,也就是按照hashmap中的value降序排序。
要实现的结果为
详细 16
问题 4
数据 2
你好 1
请高手帮忙~~
词 词频
你好 1
问题 4
数据 2
详细 16
由于还要进行其他操作,我把它存储在Hashmap中,现在想按照词频的降序排序,也就是按照hashmap中的value降序排序。
要实现的结果为
详细 16
问题 4
数据 2
你好 1
请高手帮忙~~
import java.util.HashMap;
import java.util.Iterator;
public class HashMapSort {
public static void main(String[] args)
{
String[] arrayCu = {"你好","问题","数据","详细"}; //词语
int[] arrayCp = {1,4,2,16}; //出现对应的频率
HashMap<Integer,String> map = new HashMap<Integer, String>();
for(int i=0,j=0;i<arrayCp.length&&j<arrayCu.length;i++,j++)
{
map.put(arrayCp[i],arrayCu[j]); //添加到Map里
}
Iterator i = map.entrySet().iterator();
System.out.println("=======输出词语以及对应的次数=======");
while(i.hasNext())
{
System.out.println(i.next());
}
System.out.println("=======输出排序后的词语=======");
Arrays.sort(arrayCp); //数组排序
for(int k=arrayCp.length-1;k>=0;k--)
{
System.out.println(map.get(arrayCp[k]));
}
}
}
import java.util.HashMap;
import java.util.Iterator;
public class HashMapSort {
public static void main(String[] args)
{
String[] arrayCu = {"你好","问题","数据","详细"}; //词语
int[] arrayCp = {1,4,2,16}; //出现对应的频率
HashMap<Integer,String> map = new HashMap<Integer, String>();
for(int i=0,j=0;i<arrayCp.length&&j<arrayCu.length;i++,j++)
{
map.put(arrayCp[i],arrayCu[j]); //添加到Map里
}
Iterator i = map.entrySet().iterator();
System.out.println("=======输出词语以及对应的次数=======");
while(i.hasNext())
{
System.out.println(i.next());
}
System.out.println("=======输出排序后的词语=======");
Arrays.sort(arrayCp); //数组排序
for(int k=arrayCp.length-1;k>=0;k--)
{
System.out.println(map.get(arrayCp[k]));
}
}
}
运行结果:
=======输出词语以及对应的次数=======
2=数据
4=问题
16=详细
1=你好
=======输出排序后的词语=======
详细
问题
数据
你好
1如果使用TreeMap,定义一个Comparator的子类,排序要求如自己要求。
2.如果使用HashMap的子类LinkedHashMap,使用其他方法排序,按照排序后的顺序放入LinkedHashMap中注:/**
* 降序排序比较器
* @author ping
*
*/
public class DescSortComparator implements Comparator { public int compare(Object o1, Object o2) {
if(!(o1 instanceof String) || !(o2 instanceof String)){
return 0;
}
String s1 = (String)o1;
String s2 = (String) o2;
int v1 = Integer.parseInt(s1);
int v2 = Integer.parseInt(s2);
return v2 - v1;
}}