TreeMap排序及使用Collections对List排序(主键可能重复的处理方法)

目前项目中一个head(object)会包含多个Dtl明细(object),需要依赖Dtl其中的几个属性进行排序。

TreeMap使用了key,而key不能重复,这样就不能处理相同keydtl明细数据。

于是我查了下API ,发现可以使用 Colletions.sort实现该功能。需要实现Comparator接口。定义比较的规则。 如下事例:

[@more@]

目前项目中一个head会包含多个Dtl明细,需要依赖Dtl其中的几个属性进行排序。

使用TreeMap如下:

TreeMap myTree = new TreeMap();

Iterator itr = nkeiTranHd.getDtlIterator();

while (itr.hasNext()) {

nkeiTrnDtl = (NkeiTranDtl) itr.next();

myTree.put(nkeiTrnDtl.getKijoSyhnCd().getHnbn(), nkeiTrnDtl);

}

Iterator hnbn = myTree.keySet().iterator();

while (hnbn.hasNext()) {

nkeiTrnDtl = (NkeiTranDtl) myTree.get(hnbn.next());

TreeMap使用了key,而key不能重复,这样就不能处理相同keydtl明细数据。

于是我查了下API

发现可以使用 Colletions.sort实现该功能。需要实现Comparator接口。定义比较的规则。

如下事例:

这样即使dtl中的属性是相同的也不会影响排序。

package jp.co.isetan.rb.regsykai.syukei.oltp;

import java.util.*;

/**

* Test

*

* @version $Revision:$ $Date:$

*/

public class Test {

  • public Test() {

super();

// TODO Auto-generated constructor stub

}

static class ItemComparator implements Comparator {

public int compare(Object element1, Object element2) {

TestBean item1 = (TestBean) element1;

TestBean item2 = (TestBean) element2;

return item1.getId().compareTo(item2.getId());

}

}

class TestBean {

String id;

String name;

public void setId(String newVal) {

id = newVal;

}

public String getId() {

return id;

}

public void setName(String newVal) {

name = newVal;

}

public String getName() {

return name;

}

}

public void testTreeMap() {

TestBean tb1 = new TestBean();

tb1.setId("2");

tb1.setName("2");

TestBean tb2 = new TestBean();

tb2.setId("3");

tb2.setName("3");

TestBean tb3 = new TestBean();

tb3.setId("2");

tb3.setName("2");

TestBean tb4 = new TestBean();

tb4.setId("1");

tb4.setName("1");

List tm= new ArrayList();

tm.add(tb1);

tm.add(tb2);

tm.add(tb3);

tm.add(tb4);

Collections.sort(tm, new ItemComparator());

Iterator it = tm.iterator();

while (it.hasNext()) {

TestBean tt = (TestBean)it.next();

System.out.println(tt.getId());

}

/* for (int i=0; i

System.out.println(((TestBean)tm.get(i)).getId());

}*/

}

public static void main(String[] args) {

Test t = new Test();

t.testTreeMap();

}

}

public static void main(String[] args) {

Test t = new Test();

t.testTreeMap();

}

}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/118026/viewspace-802769/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/118026/viewspace-802769/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值