JAVA模板 Java做acm所需要的基础知识之排序问题

来源:互联网 发布:网络军事小说排行榜 编辑:程序博客网 时间:2024/05/04 17:29

来源:Java做acm所需要的基础知识之排序问题


Java做acm所需要的基础知识。

以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识。                                                                                                      

         1、Arrays.sort()

                   (1)数字排序

                                int[] num =newint[]{4,2,3,5,-8,5,2,3};

            Arrays.sort(num);

           for(int i = 0; i < 8;i++)

               System.out.print(num[i]+”,”);

            输出结果:-8,2,2,3,3,4,5,5,

      (2)字符串排序(先大写后小写原则)

           String[] s = new String[]{"Z","a","A","z"};

          Arrays.sort(s);

          for(int i = 0; i < 4;i++)

          System.out.print(s[i] +",");

          输出结果:A,Z,a,z,

      (3)严格按照字母表排序(即忽略大小写)

          String[] s = new String[]{"Z","a","A","z"};

          Arrays.sort(s,String.CASE_INSENSITIVE_ORDER);

         for(int i = 0; i < 4;i++)

            System.out.print(s[i] +",");

          输出结果:a,A,Z,z,

      (4)忽略大小写反向排序

          String[] s = new String[]{"Z","a","A","z"};

         Arrays.sort(s,String.CASE_INSENSITIVE_ORDER);

         Collections.reverse(Arrays.asList(s));

         for(int i = 0; i < 4;i++)

             System.out.print(s[i] +",");

         输出结果:z,Z,A,a,

      (5)对象的排序(类似于C中的结构体的排序)

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.Arrays;  
  2.          import java.util.Comparator;  
  3.           public class Main  
  4.           {  
  5.               public static void main(String[] args)  
  6.               {  
  7.                  Dogd1 = new Dog("dog1",1);  
  8.                  Dogd2 = new Dog("dog2",2);  
  9.                  Dogd3 = new Dog("dog3",3);  
  10.                  Dogd4 = new Dog("dog4",4);  
  11.                  Dogd5 = new Dog("dog5",5);  
  12.                  Dog[]dogs = new Dog[] {d1,d2,d3,d4,d5};  
  13.                  Arrays.sort(dogs,new ByWeightComparator());  
  14.                  for(int i = 0; i <dogs.length; i++)  
  15.                  {  
  16.                      Dog dog = dogs[i];  
  17.                      System.out.print(dog.getName()+",");  
  18.                  }  
  19.               }  
  20.           }  
  21.           class Dog //定义一个“狗类”  
  22.           {  
  23.               private String name;  
  24.               private int weight;  
  25.               public Dog(String name, int weight)  
  26.               {  
  27.              this.setName(name);  
  28.              this.weight = weight;  
  29.               }  
  30.               public int getWeight()  
  31.               {  
  32.              return weight;  
  33.               }  
  34.               public void setWeight(int weight)  
  35.               {this.weight = weight;}  
  36.               public void setName(Stringname)  
  37.               {this.name = name;}  
  38.               public String getName()  
  39.               {return name;}  
  40.           }  
  41.           class ByWeightComparator implements Comparator  
  42.           {  
  43.               public final int compare(Object pFirst, Object pSecond)  
  44.               {  
  45.                  int aFirstWeight = ((Dog)pFirst).getWeight();  
  46.                  int aSecondWeight = ((Dog)pSecond).getWeight();  
  47.                  int diff = aFirstWeight - aSecondWeight;  
  48.                  if(diff >= 0)  
  49.                      return -1;  
  50.                  else if(diff < 0)  
  51.                      return 1;  
  52.                  return 0;  
  53.               }  
  54.           }  

           输出结果:dog5,dog4,dog3,dog2,dog1,

 


参考文章地址:

http://www.360doc.com/content/12/0619/15/7823806_219215040.shtml

http://blog.csdn.net/q3498233/article/details/5776028




关于Java做ACM知识的其他文章:

Java做acm所需要的基础知识之排序问题

Java做acm所需要的基础知识之基本输入输出问题
0 0
原创粉丝点击