有无此集合?

allen1981813 2008-06-29 07:53:03
1,相对value排序,假定为int.
2,然后对key排序,假定为string,按照字母大小,忽略大小写.

是否要自己写类?还是已有?


谢谢
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilrxx 2008-06-29
  • 打赏
  • 举报
回复
import java.util.*;

public class csdntest3{
@SuppressWarnings("unchecked")
public static void main(String[] args){
List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i <=5; i++){
list.add(i);
}

Collections.sort(list, new Comparatorsort());
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}

class Comparatorsort implements Comparator{
public int compare(Object o1,Object o2)
{
Integer str1=(Integer)o1;
Integer str2=(Integer)o2;
if(str1.compareTo(str2)>0)
return -1;
if(str1.compareTo(str2)<0)
return 1;
return 0;
}
}


这是个int类型的,换成String也行
lzx6169936 2008-06-29
  • 打赏
  • 举报
回复
貌似可以把TreeMap调过来用然后把value取出再排
老紫竹 2008-06-29
  • 打赏
  • 举报
回复
你可以自动以CompareTo 方法,然后使用
Collections.sort()进行排序
lisl2003 2008-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 java2000_net 的回复:]
你可以自动以CompareTo 方法,然后使用
Collections.sort()进行排序
[/Quote]
这种方式应该可行。
allen1981813 2008-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bao110908 的回复:]
没有,需要自己实现,下面这个可以参考一下:

Java codeimportjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;publicclassTest {publicstaticvoidmain(String[] args) {
Map<String, Integer>map=newHashMap<String, Integer>();
map.put("ee",3)…
[/Quote]
可惜。
  • 打赏
  • 举报
回复
没有,需要自己实现,下面这个可以参考一下:

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

public class Test {

public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("ee", 3);
map.put("b", 1);
map.put("d", 2);
map.put("eee", 3);
map.put("A", 1);
map.put("K", 2);
map.put("ade", 1);
map.put("c", 2);
map.put("aee", 3);
map.put("a", 1);
map.put("faed", 2);
map.put("bdd", 1);
map.put("qec", 2);
map.put("kqe", 2);
map.put("eade", 3);
map.put("Aadf", 1);
map.put("Kqe", 2);

Map<String, Integer> sortMap = new Test().sortByValue(map);

// 输出排序结果
for(Entry<String, Integer> entry : sortMap.entrySet()) {
System.out.printf("%-4s --> %-1s%n", entry.getKey(), entry.getValue());
}
}

public <K, V extends Number> Map<String, V> sortByValue(Map<String, V> map) {

List<Entry<String, V>> list = new ArrayList<Entry<String,V>>();

// 将 Map 中的 Entry 全部添加到 List 中
list.addAll(map.entrySet());

// 进行排序
Collections.sort(list, new Comparator<Entry<String,V>>() {
public int compare(Entry<String, V> o1, Entry<String, V> o2) {
if (o1.getValue().equals(o2.getValue())) {
// 值相同时,将键进行比较(忽略大小写的方式)
return o1.getKey().compareToIgnoreCase(o2.getKey());
} else {
// 值不同时,直接比较值
return (int)(o1.getValue().doubleValue() - o2.getValue().doubleValue());
}
}
});

// 将排序后的结果放回一个 Map 中返回
Map<String, V> sortMap = new LinkedHashMap<String, V>();
for(int i = 0, k = list.size(); i < k; i++) {
Entry<String, V> entry = list.get(i);
sortMap.put(entry.getKey(), entry.getValue());
}
return sortMap;
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧