Java对ArrayList进行排序
数字使用直接比较大小来排序,String的话,使用compare()方法进行排序。
测试代码:
1.对字符串对象排序
1 @Test 2 public void test17() throws Exception { 3 List< String > stringList = new ArrayList<>(); 4 stringList.add("haha"); 5 stringList.add("123"); 6 stringList.add("wq"); 7 stringList.add("d"); 8 stringList.add("rt"); 9 stringList.add("uuk"); 10 System.out.println("排序前:" + stringList); 11 Collections.sort(stringList, new Comparator< String >() { 12 @Override 13 public int compare(String lhs, String rhs) { 14 System.out.println("排序字符串:" + lhs + "," + rhs); 15 16 int i = lhs.compareTo(rhs); 17 System.out.println("排序结果" + i); 18 if ( i > 0 ) { 19 return 1; 20 } else { 21 return -1; 22 } 23 } 24 }); 25 System.out.println("排序后:" + stringList); 26 }
打印的日志:
1 排序前:[haha, 123, wq, d, rt, uuk] 2 排序字符串:123,haha 3 排序结果-55 4 排序字符串:wq,123 5 排序结果70 6 排序字符串:wq,haha 7 排序结果15 8 排序字符串:d,haha 9 排序结果-4 10 排序字符串:d,123 11 排序结果51 12 排序字符串:rt,haha 13 排序结果10 14 排序字符串:rt,wq 15 排序结果-5 16 排序字符串:uuk,haha 17 排序结果13 18 排序字符串:uuk,wq 19 排序结果-2 20 排序字符串:uuk,rt 21 排序结果3 22 排序后:[123, d, haha, rt, uuk, wq]
2.对数字进行排序
1 @Test 2 public void test18() throws Exception { 3 List< Integer > stringList = new ArrayList<>(); 4 stringList.add(123); 5 stringList.add(32); 6 stringList.add(0); 7 stringList.add(-4); 8 stringList.add(5); 9 stringList.add(123131); 10 System.out.println("排序前:" + stringList); 11 Collections.sort(stringList, new Comparator< Integer >() { 12 @Override 13 public int compare(Integer lhs, Integer rhs) { 14 if ( lhs > rhs ) { 15 return 1; 16 } else { 17 return -1; 18 } 19 } 20 }); 21 System.out.println("排序后:" + stringList); 22 }
打印日志:
排序前:[123, 32, 0, -4, 5, 123131]
排序后:[-4, 0, 5, 32, 123, 123131]
在实现Comparator接口的compare()方法的时候,return 1代表大于,return -1代表小于。然后根据返回值来进行排序。
直面挑战,躬身入局