解决方案 »

  1.   

    数据就这么多吗
    [{status=2, projectId=70}, {status=3, projectId=69},{status=3, projectId=68},{status=3, projectId=67},{status=4, projectId=66},{status=4, projectId=65},{status=5, projectId=64}]
    这个效率也不是低。
      

  2.   

    数据挺多的,大概有100条,并且会随着时间慢慢增长。返回的数据中projectId倒序排列。status是无规律返回的。
      

  3.   

    比如发布理财产品,最新发布的产品projectId最大,status表示状态(2表示投标中,3表示满标,4表示还款中,5表示流标,6表示已流标....),如果投标的数据不到四条剩下的条数就显示status=3满标的,如果投标+满标 < 4条,剩下的就显示 status=4 还款的。 status只要判断2,3,4就好。满足status的情况下按照projectId从大到小排序...
      

  4.   

    这个应该不难, 使用java集合排序工具即可
    Collections.sort()
      

  5.   

    先按照status排,相等的话再按照projectId排,(按照楼主的意思,如果有status<2的,直接排到最后即可),排好序后,去最前面的四个元素即可。
    代码如下:
    import java.util.*;  
    class myMap implements Comparable<myMap>
    {
    public myMap(int k,int v){
    key = k;
    value = v;
    }
    int key;
    int value;
    public int compareTo(myMap map){
    if(this.key<2) return 1; //如果有,直接排到最后
    if(this.key != map.key)
    return this.key-map.key;
    else return map.value-this.value;
    }
    }
    public class Test 
    {  

    public static void main(String args[])  
    {
    List<myMap> list = new ArrayList<myMap>();
    list.add(new myMap(2,70));
    list.add(new myMap(3,69));
    list.add(new myMap(3,68));
    list.add(new myMap(3,67));
    list.add(new myMap(4,66));
    list.add(new myMap(4,65));
    list.add(new myMap(5,64));
    Collections.sort(list);
    int i=0;
    for(myMap map:list){
    i++;
    System.out.println("{status="+map.key+",projectId="+map.value+"}");
    if(i==4) break;
    }
    }