数组中的第一个值 X[0]中存的都是1.2 /1.4/2.5...  这样的值

解决方案 »

  1.   

    随便啊冒泡 2个FOR循环
      啥都行
      

  2.   

    最近好多排序的问题。
    用Collections.sort(list,comparator);
    在comparator里定义比较规则,也就是取数组的第一个值来比较数组的“大小”。
      

  3.   


    哈哈  这为朋友 说的和我想的一样!  我刚查了api  没看到那个方法能制定按哪个值比较的呀?
      

  4.   

    Collections.sort(List<T> list, Comparator<? super T> c) 呵呵 这个吧  我看到了  
    但是这个Comparator<? super T> c  怎么指定为list中存的数组第一个数比较  还是不会。
    比较菜 麻烦再说下  多谢 
      

  5.   

    我已经用冒泡排序 做出来了  但上面说的那个jdk里的方法  还是想知道是怎么回事~
      

  6.   

    List<String[]> list=new ArrayList<String[]>();

    list.add(new String[]{"1.2","1.3","1.4"});
    list.add(new String[]{"1.5","1.6","1.7"});
    list.add(new String[]{"1.8","1.9","2.0"});
    list.add(new String[]{"2.1","2.2","2.3"});
    list.add(new String[]{"2.4","2.5","2.6"});

    Collections.sort(list,new Comparator<String[]>(){
    public int compare(String[] a1, String[] a2) {
    NumberFormat nf=NumberFormat.getInstance();
    double d1,d2;

    try{
    d1=nf.parse(a1[0]).doubleValue();
    }catch(Exception ex){
    d1=Double.MIN_VALUE;
    }

    try{
    d2=nf.parse(a2[0]).doubleValue();
    }catch(Exception ex){
    d2=Double.MIN_VALUE;
    }

    return d1>d2?1:-1;
    }
    });

    for(String[] a:list){
    System.out.println(a[0]);
    }
    }
      

  7.   

    数组的第一个元素是一个表达式?是按表达式的值排序?
    这个麻烦了。你找找看有没有对表达式求值的类啊。应该是有的。Collections.sort(list, new Comparator<String[]>(){
        compare(String[] sArray1,String[] sArray2){
            return evalue(sArray1[0])-evalue(sArray2[0]);
        }
    });
    evalue(sArray[0])---就是求表达式sArray[0]的值。 
      

  8.   

    从大到小就:
    Collections.sort(list, new Comparator<String[]>(){
        compare(String[] sArray1,String[] sArray2){
            return evalue(sArray2[0])-evalue(sArray1[0]);
        }
    });
      

  9.   

    忘了,在compare 前要加public int 
      

  10.   


    我都看不太明白了。  这样就可以 按list中存的数组中的第一个值的大小进行排序啦~~
      

  11.   

    String sz1[]=new String[2];
    String sz2[]=new String[2];
    for (int i = 0; i < re_list.size() - 1; i++) {
    for (int j = i + 1; j < re_list.size()-1; j++) {
    String s[]=(String[])re_list.get(i);
    String x[]=(String[])re_list.get(j);
    if (Float.valueOf(s[0]) < Float.valueOf(x[0])) {
    sz1=(String[]) re_list.get(i);
    sz2=(String[]) re_list.get(j);
    re_list.set(i, sz2);
    re_list.set(j, sz1);
    }
    }
    }

    List new_list = new ArrayList();
    for (int i = 0; i < 25; i++) {
    new_list.add(re_list.get(i));
    }
    我是这样处理的  不过肯定没问题 呵呵 笨方法 
    re_list是需要处理的list  new_list 是取出最大的25个后新生成的list
      

  12.   


    恩  11楼的代码 返回的是个return d1>d2?1:-1;    就是1或-1 这个没怎么看明白什么意思 呵呵 
    这位大哥应该是自己写了个比较规则吧!
      

  13.   

    我的太简单了,11楼的代码是正确的。借用一下11楼的数据:import java.util.*;
    public class Test{
        public static void main(String args[])  throws Exception{
         List<String[]> list=new ArrayList<String[]>();
            
            list.add(new String[]{"1.2","1.3","1.4"});
            list.add(new String[]{"1.5","1.6","1.7"});
            list.add(new String[]{"1.8","1.9","2.0"});
            list.add(new String[]{"2.1","2.2","2.3"});
            list.add(new String[]{"2.4","2.5","2.6"});
            Collections.sort(list, new Comparator<String[]>(){
    public int compare(String[] sArray1,String[] sArray2){
    double d2=Double.parseDouble(sArray2[0]);
    double d1=Double.parseDouble(sArray1[0]);
    if(d2>d1){
    return 1;
    }else if (d1<d2){
    return -1;
    }
    return 0;
    }
    });
    for(String[] ss : list){
    System.out.println(Arrays.toString(ss));
    }    }

    结果:
    F:\java>java Test
    [2.4, 2.5, 2.6]
    [2.1, 2.2, 2.3]
    [1.8, 1.9, 2.0]
    [1.5, 1.6, 1.7]
    [1.2, 1.3, 1.4]
      

  14.   

    重写sort方法
    你想怎么排就怎么排
      

  15.   

    关键是自己要写一个比较器Comparator,就像你理解的,Comparator就是在排序过程中,排序方法用到的比较大小的规则。Collections.sort(list, new Comparator<String[]>(){
                public int compare(String[] sArray1,String[] sArray2){
                    double d2=Double.parseDouble(sArray2[0]);
                    double d1=Double.parseDouble(sArray1[0]);
                    if(d2>d1){
                        return 1;
                    }else if (d1<d2){
                        return -1;
                    }
                    return 0;
                }
            });这段代码中,Comparator是用匿名内部类实现的,就是new Comparator(){}这种格式。
    比较大小的规则,由compare()方法来实现。
    <String[]>是泛型,规定了比较的数组类型必须是String[]类型。
      

  16.   

    恩  大概明白是什么意思  但总觉得有什么地方 还是模模糊糊的  不太清楚  
    谢过bigbug9002、xingqiliudehuanghun和其他几位兄弟帮忙了!多谢!