订购两个不平等的清单问题

时间:2012-09-12 08:39:55

标签: java sorting collections arraylist

我们如何排序两个不等大小的列表以及pojo类Field没有实现equals / hashcode方法的位置。我无法根据list1顺序对列表进行排序。我希望列表中的顺序出现“t”然后是“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);

3 个答案:

答案 0 :(得分:1)

您可以使用Collections.sort(list, new Comparator<Field>() { /* ... */ });

请参阅Javadoc

答案 1 :(得分: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 ...;
    }
});

答案 2 :(得分: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);
 }
 }
 }     
 }