zoukankan      html  css  js  c++  java
  • List和数组间的转换与排序。

     1 public class cccc {
     2     public static void main(String[] args) {
     3         //如果List里面存放的是基本类型中的整型时,
     4         //一定要指定为Integer包装类型,在做value删除时,
     5         //调用remove方法时一定要转化为Integer类型,不然是按照下标删除
     6         List<Integer> list = new ArrayList<Integer>();
     7         list.add(1);
     8         list.add(2);
     9         list.add(0);
    10         list.add(5);
    11         System.out.println(list);
    12         list.remove((Integer)5);
    13         System.out.println(list);
    14         //在做数组和list集合做转化的时候,整型类型的数组一定要用包装Integer类型,不然转化成的list每一个元素都是数组类型。。
    15         int[] num = new int[]{19,21,3,8,4,5};
    16         List list2 = Arrays.asList(num);
    17         System.out.println(list2);20         Integer[] num2 = new Integer[]{19,21,3,8,4,5};
    21         List list3 = Arrays.asList(num2);
    22         System.out.println(list3);
    23     }
    24 }

    输出如下:

    List排序:

      1 1.java提供的默认list排序方法
      2 
      3 主要代码:
      4 
      5 List<String> list = new ArrayList();list.add("刘媛媛");
      6 
      7 list.add("王硕");
      8 list.add("李明");
      9 list.add("刘迪");
     10 list.add("刘布");
     11 
     12 //升序
     13 Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//注意:是根据的汉字的拼音的字母排序的,而不是根据汉字一般的排序方法
     14 for(int i=0;i<list.size();i++)
     15 {
     16     System.out.print(list.get(i));
     17 }
     18 System.out.println("");
     19 
     20 //降序
     21 Collections.reverse(list);//不指定排序规则时,也是按照字母的来排序的
     22 for(int i=0;i<list.size();i++)
     23 {
     24      System.out.print(list.get(i));
     25 }
     26 
     27 输出结果:
     28 
     29 李明刘布刘迪刘媛媛王硕
     30 王硕刘媛媛刘迪刘布李明
     31 
     32  
     33 
     34 2.自定义的排序规则:
     35 
     36 第一种是model类实现Comparable接口,重写重写int compareTo(Object o)方法
     37 
     38             model类:
     39 
     40 public class StudentDTO implements Comparable
     41 {
     42  private String name;
     43  private int age;
     44 
     45 public String getName()
     46 {
     47     return name;
     48 }
     49 
     50 public void setName(String name)
     51 {
     52      this.name = name;
     53 }
     54 
     55 public ObjType getType()
     56 {
     57     return type;
     58 }
     59 
     60 public void setAge(int age)
     61 {
     62      this.age= age;
     63 }
     64 
     65 @Override
     66 public int compareTo(Object o)
     67 {
     68 
     69        StudentDTO sdto = (StudentDTO)o;
     70 
     71        int otherAge = sdto.getAge();
     72       // note: enum-type's comparation depend on types' list order of enum method
     73       // so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
     74 
     75 
     76       return this.age.compareTo(otherAge);
     77 }
     78 }
     79 
     80            主方法:           
     81 
     82 public static void main(String[] args)
     83 {
     84       List<StudentDTO> studentList = new ArrayList();
     85 
     86       StudentDTO s1 = new StudentDTO ();
     87 
     88       s.setName("yuanyuan");
     89 
     90       s.setAge(22);
     91 
     92       studentList.add(s1);
     93 
     94                   StudentDTO s1 = new StudentDTO ();
     95 
     96                   s.setName("lily");
     97 
     98                   s.setAge(23);
     99 
    100                   studentList.add(s2);
    101 
    102                   Collections.sort(studentList);  //按照age升序 22,23,
    103 
    104                  Collections.reverse(studentList);  //按照age降序 23,22   
    105 
    106 }
    107 
    108 第二种是比较器类实现Comparator接口,重写int compare(Object o1, Object o2)方法;
    109 
    110            model类:           
    111 
    112 public class StudentDTO implements Comparable
    113 {
    114      private String name;
    115      private int age;
    116 
    117      public String getName()
    118      {
    119          return name;
    120      }
    121 
    122      public void setName(String name)
    123     {
    124          this.name = name;
    125      }
    126 
    127      public ObjType getType()
    128      {
    129          return type;
    130      }
    131 
    132      public void setAge(int age)
    133      {
    134          this.age= age;
    135      }
    136 
    137 } 
    138 
    139            比较器类:
    140 
    141 class MyCompartor implements Comparator
    142 {
    143      @Override
    144      public int compare(Object o1, Object o2)
    145     {
    146 
    147            StudentDTO sdto1= (StudentDTO )o1;
    148 
    149            StudentDTO sdto2= (StudentDTO )o2;
    150 
    151            return sdto1.getAge.compareTo(stdo2.getAge())
    152 
    153     }
    154 }
    155 
    156            主方法:
    157 
    158 public static void main(String[] args)
    159 {
    160       List<StudentDTO> studentList = new ArrayList();
    161 
    162       StudentDTO s1 = new StudentDTO ();
    163 
    164       s.setName("yuanyuan");
    165 
    166       s.setAge(22);
    167 
    168       studentList.add(s1);
    169 
    170       StudentDTO s1 = new StudentDTO ();
    171 
    172       s.setName("lily");
    173 
    174       s.setAge(23);
    175 
    176       studentList.add(s2);
    177 
    178       MyComparetor mc = new MyComparetor();
    179 
    180       Collections.sort(studentList,mc);     //按照age升序 22,23,
    181 
    182       Collections.reverse(studentList,mc);    //按照age降序 23,22   
    183 
    184 }
    185 
    186  
    187 
    188  
    189 
    190 附注:
    191 
    192 1.对于数组的排序方法如下:
    193 
    194 String[] names = {"王林",  "杨宝", "李镇", "刘迪", "刘波"};  
    195 Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));//升序;   
    196 System.out.println(Arrays.toString(names));      
    197 
    198 2.对于汉字的排序:可以尝试使用ICU4J会得到更好的结果,特别是姓为某些生僻字的时候,
    199 
    200 用com.ibm.icu.text.Collator替换java.text.Collator,用com.ibm.icu.util.ULocale替换java.util.Locale
    201 
    202 3.对于枚举类型的enum1.compareTo(enum2)是按照枚举类型值在定义时的先后顺序比较的,越后面的越大,
    203 
    204 而不是按照值的字母先后顺序比较的。
  • 相关阅读:
    linux系统根目录文件系统空间不足导致的错误
    python---对象
    公共函数
    PHP接口(interface)和抽象类(abstract)
    mysql引擎
    InstallShield自定义图片资源
    InstallShield 创建自己的Dialog
    InstallShield:自己备份
    注册表和ODBC
    IS脚本学习
  • 原文地址:https://www.cnblogs.com/sanhuan/p/6727917.html
Copyright © 2011-2022 走看看