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