0

サイズが等しくない 2 つのリストをソートするにはどうすればよいですか。また、pojo クラスのフィールドが equals/hashcode メソッドを実装していません。list1 の順序に基づいてリストをソートできません。 s".このシナリオを達成することは可能ですか?

Field f=new Field();
f.setKey("s");
f.setValue("he");

Field f1=new Field();
f1.setKey("t");
f1.setValue("she");

List<Field> list = new ArrayList<Field>();
list.add(f);
list.add(f1);

Field f2=new Field();
f2.setKey("t");
f2.setValue("he");

Field f3=new Field();
f3.setKey("s");
f3.setValue("she");

Field f4=new Field();
f4.setKey("u");
f4.setValue("she");

List<Field> list1 = new ArrayList<Field>();
list1.add(f2);
list1.add(f3);
list1.add(f4);
4

3 に答える 3

1

使用できますCollections.sort(list, new Comparator<Field>() { /* ... */ });

Javadocを参照

于 2012-09-12T08:44:34.697 に答える
0

次のようなものを試してください:

import java.util.HashMap; 
import java.util.Map.Entry; 
public class HashMapComparison 
{     
 public static void main(String[] args) 
 {        
 HashMap<Integer, String> map1 = new HashMap<Integer, String>();   
 map1.put("s", "he");     
 map1.put("t", "she");    
 HashMap<Integer, String> map2 = new HashMap<Integer, String>();  
 map2.put("t", "he");     
 map2.put("s", "she");  
 map2.put("u", "she"); 
 HashMap<Integer, String> orderedMap1 = new HashMap<Integer, String>();  
 for (Entry<Integer, String> entry : map2.entrySet()) {      
 Integer key = entry.getKey();        
 for(Entry<Integer, String> entry : map1.entrySet()){
 if(key.equals(entry.getKey()){
   orderedMap1.put(entry);
 }
 }
 }     
 } 
于 2012-09-12T09:04:25.657 に答える
0

目的を達成するための組み込みメソッドはありませんがCollections.sort、独自のコンパレータを提供することで簡単に実現できます。

Collections.sort(list, new Comparator<Field>() {
    @Override
    public int compare(Field f1, Field f2) {
        // compare your fields here and
        //     return -1 if f2 should be before f2
        //     return 0 if they are the same
        //     return 1 if f1 should be after f2

        return ...;
    }
});
于 2012-09-12T08:47:06.877 に答える