1. 程式人生 > >使用介面Comparable實現物件排序與呼叫

使用介面Comparable實現物件排序與呼叫

本文的程式碼是在上文的程式碼上做了一點修改實現的。介面Comparable<T>可以實現物件的排序,這樣在使用時就可以對物件進行排序使用了,另外程式碼中體現了使用列表來在記憶體中儲存物件,並對其進行排序的方法。其中實現該介面需要重寫cimpareTo這個方法。直接上程式碼:

package chapter1;
import java.io.Serializable;

public class Person implements Serializable,Comparable<Person>{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String name;
	int age;
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	public String toString(){
		return "name:"+name+" age:"+age;
	}
	@Override
	public int compareTo(Person o) {
		if(this.age>o.age)
			return 1;
		else if(this.age==o.age)
			return 0;
		else
			return -1;
	}
}
package chapter1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.*;

public class Read {

	public static void main(String[] args) throws IOException, ClassNotFoundException {
		File file = new File("C:/Users/Administrator/Desktop/read.txt");
		FileOutputStream fos = new FileOutputStream(file);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		Random ran = new Random();
		for(int i=0;i<10;i++){
			Person person = new Person("person"+i,Math.abs(ran.nextInt()%100));
			System.out.println(person);
			oos.writeObject(person);
		}
		System.out.println();
		FileInputStream fis = new FileInputStream(file);
		ObjectInputStream ois = new ObjectInputStream(fis);
		ArrayList<Person> personlist = new ArrayList<Person>();
		for(int i=0;i<10;i++){
			Person p = (Person)ois.readObject();
			personlist.add(p);
		}
		Collections.sort(personlist);
		System.out.println(personlist);
	}

}

結果如下:

name:person0 age:21
name:person1 age:66
name:person2 age:97
name:person3 age:90
name:person4 age:35
name:person5 age:9
name:person6 age:5
name:person7 age:67
name:person8 age:35
name:person9 age:47

[name:person6 age:5, name:person5 age:9, name:person0 age:21, name:person4 age:35, name:person8 age:35, name:person9 age:47, name:person1 age:66, name:person7 age:67, name:person3 age:90, name:person2 age:97]

需要說明的是,這裡我的年齡是隨機生成的,每一次都不一樣。這裡面用到的一些隨機數生成,列表排序,泛型等知識之前博文有寫過,這裡不再重複


相關推薦

使用介面Comparable實現物件排序呼叫

本文的程式碼是在上文的程式碼上做了一點修改實現的。介面Comparable<T>可以實現物件的排序,這樣在使用時就可以對物件進行排序使用了,另外程式碼中體現了使用列表來在記憶體中儲存物件,並對其進行排序的方法。其中實現該介面需要重寫cimpareTo這個方法。直接

Android外掛化技術之旅 1 開篇 - 實現啟動外掛呼叫外掛中的Activity和Service

前言 Android技術如今已很成熟了,元件化、外掛化、熱修復等等框架層出不窮,如果只停留在單純的會用框架上,技術永遠得不到成長,只有懂得其原理,能夠婉婉道來,能夠自己手動寫出,技術才會得到成長,與其焦慮未來,不如把握現在。本篇將手寫教大家寫出外掛化框架,外掛化技術是Android高階工程師必備的技術之一,

用Java實現歸併排序總結

一、思路1.劃分:用遞迴的思想將陣列進行劃分,劃分原則類似於二分查詢,直到劃分單元的元素個數為1.2.歸併:在將同層的兩個有序子組歸併成一個有序子組,複製一個將兩個有序子組合並的陣列,設定兩個遊標,初始位置為複製陣列對應的兩個有序子組的起始位置,比較兩個遊標所指向的元素的大小,將小的元素放入到合併空間,直到歸

用java程式碼實現氣泡排序選擇排序

import java.util.Arrays; public class Sort { public static void main(String[] args) { int[] arr={12,45,89,2,10,9}; maopaoSort(arr); selectSort(arr);

.net framework 4.5 +steeltoe+ springcloud(二) 實現服務發現呼叫功能

首先,寫一個簡單的可被呼叫的服務註冊到服務中心,我們這命名為java-service,用的是IDEA建立一個spring boot專案,選擇spring client型別。 修改application.properties,配置服務中心地址和服務埠號: spring.application.n

Java 基礎資料型別 和 深度克隆物件的2種方法(實現Cloneable介面或者實現物件序列化)

知識點1(java有9種傳遞函式引數時是傳值): 8大基礎資料型別加String: 1,位元組 byte   2,短整型 short  3,整型int  4,長整形 long  5,字元型 char  6,浮點型 float  7,雙精度型 double  8,布林型 bo

物件排序實現comparable介面

定義: Comparable & Comparator 都是用來實現集合中的排序的,只是 Comparable 是在集合內部定義的方法實現的排序,Comparator 是在集合外部實現的排序,所以,如想實現排序,就需要在集合外定義 Comparator

實現Comparable介面,把物件按優先順序進行排序

在讀《efficitive java》第12條:考慮實現Comparable介面 使用Comparable介面按物件按屬性的優先順序排序還是比較方便的 例項程式碼 package com.ct

JAVA 利用Arraylist.sort()進行排序實現。(comparable介面實現

1.什麼是Comparable介面 此介面強行對實現它的每個類的物件進行整體排序。此排序被稱為該類的自然排序 ,類的 compareTo 方法被稱為它的自然比較方法 。實現此介面的物件列表(和陣列)可以通過 Collections.sort (和 Arrays.sort )進行自動排序。實現此介面的

PHP學習——28 PHP面向物件(抽象類抽象方法、介面實現)

一、抽象類與抽象方法 <?php // 任何一個類,如果它裡面至少有一個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。 abstract class Person // 定義為抽象的類不能被例項化。 { public $name; public function __co

JAVA中Arrays.sort()使用兩種方式(Comparable和Comparator介面)對物件或者引用進行排序

package com.dt.Sort; import java.util.Arrays; import java.util.Comparator; /**  * 使用Comparator介面:編寫多個排序方式類實現Comparator介面,並重寫新Comparator介面中的compare()方法 pub

Java中實現物件的比較:Comparable介面和Comparator介面

在實際應用中,我們往往有需要比較兩個自定義物件大小的地方。而這些自定義物件的比較,就不像簡單的整型資料那麼簡單,它們往往包含有許多的屬性,我們一般都是根據這些屬性對自定義物件進行比較的。所以Java中要比較物件的大小或者要對物件的集合進行排序,需要通過比較這些物件的某些屬性

物件排序之Comparator,Comparable介面區別(華為面試題)

給了個類,要求編寫一段程式碼,給以下型別的資料排序(按index降序排): public class A{   public int index ;    public String str;   public …… ; } 條件: 1.資料量很大,要求效能夠; 2.擴充套件性好:按其他資料型別(如 Stri

Java 冒泡排序快速排序實現

基於 amp 可能 ava 放置 jpg end images ati 冒泡排序     基本特點       (1)基於交換思想的排序算法       (2)從一端開始,逐個比較相鄰的兩個元素,發現倒序即交換。      (3)一次遍歷,一定能將其中

排序算法的C語言實現(上 比較類排序:插入排序、快速排序歸並排序)

大於等於 額外 通過命令 無序 tro 需要 目錄 線性 如何選擇 總述:排序是指將元素集合按規定的順序排列。通常有兩種排序方法:升序排列和降序排列。例如,如整數集{6,8,9,5}進行升序排列,結果為{5,6,8,9},對其進行降序排列結果為{9,8,6,5}。雖然排序的

基礎算法-冒泡排序二分查找(JAVA實現)

數據 ray 一個數 stat 小數 代碼 程序 ring string 基礎算法: 冒泡排序 冒泡排序:將無序的數據有序化, 將相鄰的兩個元素進行比較, 使最大值或者最小值一步步冒上去,所以稱為冒泡排序. 冒泡排序思想: 以升序為例: 在一個數組中,將相鄰的兩個元素A與B

氣泡排序選擇排序實現分析

氣泡排序與選擇排序是兩種非常基礎的排序方式,也是許多程式設計師入門的排序演算法。很多資料結構或者演算法教材清晰明瞭地描述了兩種排序的工作原理,複雜度等,但紙上得來終覺淺,為了摸清楚兩種演算法的效能,我還是親自動手操作了一波~~~ 下面請跟上我的思路~~~ 氣泡排序作為最最基礎的排序方法,應該

vue2.0 實現漢字A-Z排序手機通訊錄效果

先上一張效果圖: 列表html  template  (使用 ydui移動端UI  , 地址:http://vue.ydui.org/) <yd-cell-group v-for="item in memberList" :title="item

資料結構——排序查詢(2)——希爾排序(C++實現

希爾排序原理 希爾排序(Shell’s Sort),也稱為“縮小增量排序”,是一種插入排序類的演算法。最簡單的插入排序,我在上一個專欄的一篇文章C++抽象程式設計——演算法分析(8)——插入排序演算法與分析有提到過,這裡就不再贅述,這裡就只介紹一些我以前沒寫過的演算法。 希爾排序是一

資料結構——排序查詢(5)——折半查詢(C++實現)法

順序查詢 順序查詢,是一種最直觀的查詢方式。原理閒蕩簡單就是我們正常思維的查詢,從給定的序列出發,依次檢查序列中的每一個專案是否為我們給定的關鍵字。是則查詢成功,否則查詢失敗。 bool searchByOrder(vecter<int> vec){ for(int