1. 程式人生 > >Java陣列排序Arrays.sort,以及Comparator介面的用法

Java陣列排序Arrays.sort,以及Comparator介面的用法

轉自:http://java.chinaitlab.com/base/808196.html

有的時候需要對數組裡的element進行排序。當然可以自己編寫合適的排序方法,但既然java包裡有自帶的Arrays.sort排序方法,在陣列元素比較少的時候為何不用?

  Sorting an Array 1. 數字排序  int[] intArray = new int[] { 4, 1, 3, -23 };

  Arrays.sort(intArray);

  輸出: [-23, 1, 3, 4]

  2. 字串排序,先大寫後小寫 String[] strArray = new String[] { "z", "a", "C" };

  Arrays.sort(strArray);

  輸出: [C, a, z]

  3. 嚴格按字母表順序排序,也就是忽略大小寫排序 Case-insensitive sort

  Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

  輸出: [a, C, z]

  4. 反向排序, Reverse-order sort

  Arrays.sort(strArray, Collections.reverseOrder());

  輸出:[z, a, C]

  5. 忽略大小寫反向排序 Case-insensitive reverse-order sort

  Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

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

  輸出: [z, C, a]

  java初學者最常見的錯誤思想,就是試圖去寫一些方法來完成陣列的排序功能,其實,陣列排序功能,在java的api裡面早已實現,我們沒有必要去重複製造輪子。

  Arrays類有一個靜態方法sort,利用這個方法我們可以傳入我們要排序的陣列進去排序,因為我們傳入的是一個數組的引用,所以排序完成的結果也通過這個引用的來更改陣列.對於整數、字串排序,jdk提供了預設的實現,如果要對一個物件陣列排序,則要自己實現java.util.Comparator介面。

  package demo1.client;

  import java.util.Arrays;

  import java.util.Comparator;

  public class ArraySortDemo {

  public void sortIntArray() {

  int[] arrayToSort = new int[] { 48, 5, 89, 80, 81, 23, 45, 16, 2 };

  System.out.println("排序前");

  for (int i = 0; i < arrayToSort.length; i++)

  System.out.println(arrayToSort[i]);

  // 呼叫陣列的靜態排序方法sort

  Arrays.sort(arrayToSort);

  System.out.println("排序後");

  for (int i = 0; i < arrayToSort.length; i++)

  System.out.println(arrayToSort[i]);

  }

  public void sortStringArray() {

  String[] arrayToSort = new String[] { "Oscar", "Charlie", "Ryan",

  "Adam", "David" };

  System.out.println("排序前");

  for (int i = 0; i < arrayToSort.length; i++)

  System.out.println(arrayToSort[i]);

  System.out.println("排序後");

  //呼叫陣列的靜態排序方法sort

  Arrays.sort(arrayToSort);

  for (int i = 0; i < arrayToSort.length; i++)

  System.out.println(arrayToSort[i]);

  }

  public void sortObjectArray() {

  Dog o1 = new Dog("dog1", 1);

  Dog o2 = new Dog("dog2", 4);

  Dog o3 = new Dog("dog3", 5);

  Dog o4 = new Dog("dog4", 2);

  Dog o5 = new Dog("dog5", 3);

  Dog[] dogs = new Dog[] { o1, o2, o3, o4, o5 };

  System.out.println("排序前");

  for (int i = 0; i < dogs.length; i++) {

  Dog dog = dogs[i];

  System.out.println(dog.getName());

  }

  Arrays.sort(dogs, new ByWeightComparator());

  System.out.println("排序後:");

  for (int i = 0; i < dogs.length; i++) {

  Dog dog = dogs[i];

  System.out.println(dog.getName());

  }

  }

  public static void main(String[] args) {

  ArraySortDemo t = new ArraySortDemo();

  t.sortIntArray();

  t.sortStringArray();

  t.sortObjectArray();

  }

  }

  class Dog {

  private String name;

  private int weight;

  public Dog(String name, int weight) {

  this.setName(name);

  this.weight = weight;

  }

  public int getWeight() {

  return weight;

  }

  public void setWeight(int weight) {

  this.weight = weight;

  }

  public void setName(String name) {

  this.name = name;

  }

  public String getName() {

  return name;

  }

  }

  class ByWeightComparator implements Comparator {

  public final int compare(Object pFirst, Object pSecond) {

  int aFirstWeight = ((Dog) pFirst).getWeight();

  int aSecondWeight = ((Dog) pSecond).getWeight();

  int diff = aFirstWeight - aSecondWeight;

  if (diff > 0)

  return 1;

  if (diff < 0)

  return -1;

  else

  return 0;

  }

  }


相關推薦

Java陣列排序Arrays.sort以及Comparator介面用法

轉自:http://java.chinaitlab.com/base/808196.html 有的時候需要對數組裡的element進行排序。當然可以自己編寫合適的排序方法,但既然java包裡有自帶的Arrays.sort排序方法,在陣列元素比較少的時候為何不用?   So

Java氣泡排序(Bubble Sort)Array和List排序

Java氣泡排序(Bubble Sort) 原理:比較兩個相鄰的元素,將值大的元素交換至右端。 public class BubbleSortArray { public static void main(String[] args) { // in

java--陣列排序Arrays.sort())

package day_6_2; import java.util.Arrays; /** * Arrays.sort()排序 * Arrays.toString()列印結果 * */ pub

java List 排序 Collections.sort() 對 List 排序(首先年齡排序如果年齡相同則按名字排序)

第一種 /* * Collections可以針對ArrayList儲存基本包裝類的元素排序,儲存自定義物件可不可以排序呢? */ public class CollectionsDemo { public static void main(String[] args

java ----如何用Arrays.sort()從大到小排列陣列

  在Arrays的方法中的Arrays.sort()排序中,預設為從小到大的排序,如果想用Arrays.sort()從大到小的順序排列,則需要用到Comparator比較器介面;實現java.util.Comparator;package  java.util;public

java-hashset隨機數字放入後大小排序的假象以及數字大小與數字範圍的關係。

起因 首先是因為thinking in java的一個例子(一個存放int的set集合): 但是與他期待的output不一致: 出現了從小到大的順序排列輸出。 仔細看看果然沒什麼差別(網上看到原因是jdk版本不一致,hashmap的hash演算法

java Arrays.sort(T[] a, Comparator

package test_set_map; import java.util.Arrays; import java.util.TreeSet; public class Test_TreeSet_Sort { /** * @param args */ p

Java陣列排序Comparator介面實現自定義排序

1、為節點排序。節點由3個欄位組成,包括num ,weight ,height 。先按照weight升序排序,再按照height降序排序。 2、使用Comparator介面規則:編寫多個排序方式類實現Comparator介面,並重寫新Comparator介面中的compar

java安裝與環境配置以及gitblit安裝使用

運行 ogr inf per jar data 電腦 IE 系統變量 1.首先下載java JDK ,地址:百度搜索:java jdk 下載即可。 2.下載完成安裝,一般不指定目錄的情況下,會安裝在C盤 Program Files(x86)下邊的 java中。 3.配置環境

Java 基礎排序演算法(冒泡比較插入選擇希爾歸併)

轉自部落格園:http://www.cnblogs.com/0201zcr/p/4763806.html 氣泡排序   氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說

maven 專案java Resources出現紅色!以及pom.xml出現紅色X的解決方案

直接貼連結,我的問題這個,就是這個連結解決的。建議參考: https://zhidao.baidu.com/question/1674398063645564827.html 如果上面的方法解決不了,那麼就嘗試一下下面的解決方案 https://blog.csdn.net/we

Java陣列排序及元素查詢2001

以下例項演示瞭如何使用sort()方法對Java陣列進行排序,及如何使用 binarySearch() 方法來查詢陣列中的元素, 這邊我們定義了 printArray() 方法來列印陣列: import java.util.Arrays; public class MainClass { publ

JAVA——陣列排序

1,使用Java類庫中的sort方法排序; 2,使用雙層迴圈進行排序 (一)用sort直接排序 Java類庫中陣列排序操作如 : java.util.Arrays.sort(arrayName) ; 只要是基本資料型別都可以用sort進行排序 程式碼如下: public cla

java 陣列排序

選擇排序 將要排序的一組數字進行遍歷。 第一次遍歷,將第一個位置上的數字與後面的數字進行比較,如果後面的數字比第一個位置上的元素小,則將兩個數字的位置進行交換。 第二次遍歷,將第二個位置上的數字與後面的數字進行比較,如果後面的數字比第二個位置上的元素小,則將兩個數字的位置進行交換。 依次進行遍歷

Problem D: 指標:呼叫自定義排序函式sort對輸入的n個數進行從小到大輸出。

#include<stdio.h> int sort(int *p,int n) { int i,j,temp; for(i=0;i<n-1;i++) for(j=i;j<n;j++) if(p[i]>p[j]) {

關於富文字編輯器—UEditor(java版)的使用以及如何將UEditor的檔案/圖片上傳路徑改成絕對路徑

突然發現好久沒寫部落格了,感覺變懶了,是要讓自己養成經常寫文章的習慣才行。既可以分享自己的所學,和所想,和大家一起討論,發現自己的不足的問題。 大家可能經常會用到富文字編輯器,今天我要說的是UEditor的使用,這是一個簡單易用的開源富文字編輯器。但是對於沒有用過的同學而言還是需要稍微瞭解一下的。 可能有些人

java:陣列排序三種方式-冒泡/選擇/二分查詢

1.高階冒泡方式 public class Demo1_Array { public static void main(String[] args) { // TODO Auto-genera

java陣列:去重增加刪除元素

java陣列:去重,增加,刪除元素 import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class Code { pub

JAVA氣泡排序Bubble sort

原理是相鄰的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換, 這樣一趟過去後,最大或最小的數字被交換到了最後一位, 然後再從頭開始進行兩兩比較交換,直到倒數第二位時結束 相關java程式碼:

Java陣列排序——冒泡法

演算法原理 氣泡排序演算法的原理如下: 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是