按值排序问题

feng911 2006-12-05 01:08:09
如:
部品A 10
部品B 9
部品C 8
部品D 11
部品E 8
如何得到这样的结果:
部品C 8
部品E 8
部品B 9
部品A 10
部品D 11
前面部份是不重复的,后面数值部份可能重复,数值越小的排在前面,数值相同的哪个先都可以

...全文
320 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
taojiayu 2006-12-05
  • 打赏
  • 举报
回复
mark
figoren 2006-12-05
  • 打赏
  • 举报
回复
//排序
Collections.sort(epiList, new epiComparator(field, flag));
private class epiComparator implements Comparator
{
private String field;
private String flag;

public epiComparator(String field, String flag)
{
this.field = field;
this.flag = flag;
}
/*
* 方法名称:compare
* 内容摘要:实现比较方法的地方 返回 1 则 a.b交换 -1 a,b不变 0 不变
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Object o1, Object o2)
{
EpibolyObject epi1 = new EpibolyObject();
EpibolyObject epi2 = new EpibolyObject();

epi1 = (EpibolyObject) o1;
epi2 = (EpibolyObject) o2;

//比较字段的大小
int big = 0;
//根据升降确定返回值
int order = 0;

if ("epiComName".equals(field))
{
// > return 1 < return -1 == return 0
big = epi1.getEpiComName().compareTo(epi2.getEpiComName());
}
else if ("epiNo".equals(field))
{
big = epi1.getEpiNo().compareTo(epi2.getEpiNo());
}
else if ("epiName".equals(field))
{
big = epi1.getEpiName().compareTo(epi2.getEpiName());
}



if ("asc".equals(flag))
{
order = big;
}
else if ("desc".equals(flag))
{
order = -big;
}

return order;
}

}
fool_leave 2006-12-05
  • 打赏
  • 举报
回复
class Node
implements Comparator {
public String s1;
public String s2;
public int compare(Object object, Object object1) {
Node n1=(Node)object;
Node n2=(Node)object1;
return n1.s2.compareTo(n2.s2);
}

public boolean equals(Object object) {
return false;
}
}
//排序
ArrayList list=new ArrayList();
//list里面添加Node节点
Object[] v= list.toArray();
Arrays.sort(v);
然后看看v的顺序如何
hdhmail2000 2006-12-05
  • 打赏
  • 举报
回复
在后面加一个计数器的数字就可以了,不影响的
如81,82。。。。。。。
feng911 2006-12-05
  • 打赏
  • 举报
回复
TO hdhmail2000(禅剑飞雪)
这个例子是按KEY进行排序的,我这个问题不能把数值作为KEY。因为有重复的
feng911 2006-12-05
  • 打赏
  • 举报
回复
TO hdhmail2000(禅剑飞雪)
这个例子是按KEY进行排序的,我这个问题如果不能把数值作为KEY。因为有重复的
hdhmail2000 2006-12-05
  • 打赏
  • 举报
回复
import java.util.Collection;



import java.util.Iterator;



import java.util.SortedMap;



import java.util.TreeMap;






/**



* @author www.inspiresky.com



*



*/



public class TestSort {






/**



* @param args



*/



public static void main(String[] args) {



// TODO Auto-generated method stub



TreeMap map = new TreeMap();







for(int i=0; i<10; i++) {



String s = ""+(int)(Math.random()*1000);



map.put(s,s);



}







map.put("abcd","abcd");



map.put("Abc", "Abc");



map.put("bbb","bbb");



map.put("BBBB", "BBBB");







map.put("北京","北京");



map.put("中国","中国");



map.put("上海", "上海");



map.put("厦门", "厦门");



map.put("香港", "香港");



map.put("碑海", "碑海");







Collection col = map.values();



Iterator it = col.iterator();



while(it.hasNext()) {



System.out.println(it.next());



}



}



}

feng911 2006-12-05
  • 打赏
  • 举报
回复
希望各位能详细举个例子,谢谢。
awusoft 2006-12-05
  • 打赏
  • 举报
回复
在类里实现Comparable接口里的compareTo(E o)方法
hdhmail2000 2006-12-05
  • 打赏
  • 举报
回复
保存到TreeMap中就自动排序了
fool_leave 2006-12-05
  • 打赏
  • 举报
回复
Arrays.sort()
现成的排序
你需要做的就是写一个Comparator来比较大小
先看看Arrays.sort方法吧,很简单的

62,614

社区成员

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

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