如:
部品A 10
部品B 9
部品C 8
部品D 11
部品E 8
如何得到这样的结果:
部品C 8
部品E 8
部品B 9
部品A 10
部品D 11
前面部份是不重复的,后面数值部份可能重复,数值越小的排在前面,数值相同的哪个先都可以
部品A 10
部品B 9
部品C 8
部品D 11
部品E 8
如何得到这样的结果:
部品C 8
部品E 8
部品B 9
部品A 10
部品D 11
前面部份是不重复的,后面数值部份可能重复,数值越小的排在前面,数值相同的哪个先都可以
调试欢乐多
现成的排序
你需要做的就是写一个Comparator来比较大小
先看看Arrays.sort方法吧,很简单的
/** * @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()); } } }
这个例子是按KEY进行排序的,我这个问题如果不能把数值作为KEY。因为有重复的
这个例子是按KEY进行排序的,我这个问题不能把数值作为KEY。因为有重复的
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的顺序如何
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;
}}