javaにおけるmap複雑な配列転送list(二次元集合のエルゴード及びmerge順序)
3547 ワード
1.はじめに
問題のとおりです。二つのやり方があります。作り方2は作り方1よりいいです。
2.作り方
(1)配列をCollectionにする
参照
Object[]list 2=collection.toAray()
(3)集合の集合を遍歴する
作り方1のステップ2は最適化できます。直接リストをmergeして並べ替えます。例は以下の通りです。
(1)Test類
問題のとおりです。二つのやり方があります。作り方2は作り方1よりいいです。
2.作り方
(1)配列をCollectionにする
Map<byte[], List<Test>> results = null;//
Collection<List<Test>> collection = results.values();
(2)集合を行列に変換すると、各配列が一つのセットになります。参照
Object[]list 2=collection.toAray()
(3)集合の集合を遍歴する
long total=0;//
for (int i = 0; i < list2.length; i++) {
List<Test> object = (List<Test>) list2[i];
total = total + object.size();
}
3.作り方2作り方1のステップ2は最適化できます。直接リストをmergeして並べ替えます。例は以下の通りです。
(1)Test類
package com.ljn.entity;
public class Test {
private long id;
public Test(long id) {
this.id = id;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
(2)カスタムソート類、これ
package com.ljn.entity;
import java.util.Comparator;
/**
* Step
*
* @author Administrator
*
*/
public class MyComparator implements Comparator<Test> {
/**
* o1 o2, ; o1 o2, ; , 0;
*/
@Override
public int compare(Test t1, Test t2) {
long id1 = t1.getId();
long id2 = t2.getId();
if (id1 > id2) {
return 1;
} else if (id1 == id2) {
return 0;
} else {
return -1;
}
}
}
(3)Listに対してmergeとソートを行うのは基本的に一番早いです。もしもっと早いのがあれば、メッセージを残してください。
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.ljn.entity.MyComparator;
import com.ljn.entity.Test;
public class CollectionTest {
public static void main(String[] args) {
// Collection<List> collection=Collections.a;
List List1 = new ArrayList();
List List2 = new ArrayList();
List1.add(new Test(1));
List1.add(new Test(2));
List1.add(new Test(3));
List1.add(new Test(4));
List2.add(new Test(5));
List2.add(new Test(5));
List2.add(new Test(6));
List2.add(new Test(7));
List2.add(new Test(8));
Map<byte[], List<Test>> results = new HashMap();
results.put("1".getBytes(), List1);
results.put("2".getBytes(), List2);
Collection<List<Test>> collection = results.values();
List list = new ArrayList();
Iterator it=results.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Map.Entry) it.next();
List<Test> li=(List<Test>)entry.getValue();
list.addAll(li);
}
//list.addAll(collection);
for (int i = 0; i < list.size(); i++) {
System.out.println(((Test)list.get(i)).getId());
}
Collections.sort(list, new MyComparator());
for (int i = 0; i < list.size(); i++) {
System.out.println(((Test)list.get(i)).getId());
}
}
}