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 }

輸出以下:java

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 而不是按照值的字母前後順序比較的。
相關文章
相關標籤/搜索