TreeMap排序及使用Collections對List排序(主鍵可能重複的處理方法)
目前專案中一個head(object)會包含多個Dtl明細(object),需要依賴Dtl其中的幾個屬性進行排序。
TreeMap使用了key,而key不能重複,這樣就不能處理相同key的dtl明細資料。
於是我查了下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不能重複,這樣就不能處理相同key的dtl明細資料。
於是我查了下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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Collections對list的內容進行排序排序
- List排序Collections.sort 重寫compare排序
- Collections sort()排序方法排序
- List排序用Collections.sort and Comparator排序
- Collections.sort()方法,字元排序字元排序
- Python 字串,list排序,刪除重複資料Python字串排序
- 利用apache Collections和google guava對list和map進行過濾和排序ApacheGoGuava排序
- Collections排序問題!!排序
- MySQL 處理插入過程中的主鍵唯一鍵重複值辦法MySql
- Oracle 排序中常用的NULL值處理方法Oracle排序Null
- python list排序的兩種方法及例項講解Python排序
- MySQL 預設排序真的是按主鍵來排序的嗎MySql排序
- Java使用Collections對中文字元進行首字母排序Java字元排序
- [Python] Pandas 對資料進行查詢、替換、篩選、排序、重複值和缺失值處理Python排序
- Java中List的排序Java排序
- 用java.util.Collections中的sort方法對兩個類的物件進行排序Java物件排序
- Java 8 比較器:如何對 List 排序Java排序
- 為什麼處理排序的陣列要比非排序的快排序陣列
- python list 排序Python排序
- 刪除排序陣列中的重複項排序陣列
- 聊聊MySQL是如何處理排序的MySql排序
- 對list集合中的物件進行排序(轉載)物件排序
- 希爾排序——重溫排序(二)排序
- 刪除排序陣列中的重複數字排序陣列
- 歸併排序與快速排序的簡明實現及對比排序
- java中Collections.sort排序詳解Java排序
- Java中Collections.sort()排序詳解Java排序
- C# list物件排序C#物件排序
- SQL 處理重複值SQL
- LeetCode 83.Remove Duplicates from Sorted List(從已排序連結串列中除去重複) Easy/Linked ListLeetCodeREM排序
- C# 中使用Linq和Lambda表示式對List進行排序C#排序
- 為什麼處理排序陣列比未排序陣列快排序陣列
- 題目:刪除排序陣列中的重複項排序陣列
- Collections工具類,可以使用collections工具類對程式碼中的list進行分組
- MySQL中處理各種重複的一些方法MySql
- MySQL主從複製延遲原因及處理思路MySql
- python如何將list排序Python排序
- Java基礎系列—List排序Java排序