1. 程式人生 > >java 類比較大小(實現Comparable介面)

java 類比較大小(實現Comparable介面)

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 兩個類要想比較大小,
 * 就必須實現Comparable<T>介面,型別引數T通常設為實現該介面的類名
 * 實現Comparable<T>介面後,還要覆蓋public int compareTo(<T> object)方法
 *		如果兩個物件相等返回0
 *		當前物件大於方法傳過來的物件時,返回一個正整數
 *      當前物件小於方法傳過來的物件時,返回一個負整數
 *		而且相等時必須和equals()方法保持一致,即eaquls()方法要返回true
 *		否則相反
 */
public class comparablePoint implements Comparable<comparablePoint>{
	public int x;
	public int y;
	public comparablePoint(int x,int y)
	{
		this.x=x;
		this.y=y;
	}
	public int compareTo(comparablePoint point)
	{
		int s1=x*x+y*y;
		int s2=point.x-point.x+point.y*point.y;
		return s1-s2;
	}
	public String toString()
	{
		return "["+x+","+y+"]";
	}
	public static void main(String args[])
	{
		if(new comparablePoint(3, 4).compareTo(new comparablePoint(1, 1))>0)
			System.out.println("true");
		//線性表
		List<comparablePoint> points=new ArrayList<comparablePoint>();
		points.add(new comparablePoint(1, 6));
		points.add(new comparablePoint(3, 4));
		points.add(new comparablePoint(5, 2));
		System.out.println(points);
		Collections.sort(points);//呼叫Collections工具類進行排序
		System.out.println("排序後的情況");
		System.out.println(points);
	}
}

結果

true
[[1,6], [3,4], [5,2]]
排序後的情況
[[3,4], [5,2], [1,6]]


相關推薦

java 類比大小實現Comparable介面

import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 兩個類要想比較大小,

java實現自定義排序實現Comparable介面

        排序的演算法,大家都不陌生,有氣泡排序、選擇排序、插入排序,快速排序等等。如果現在有學生類,學校添加了很多學生,要你給學生按照學號大小排序,你會怎麼排? 學生類   Student {int stuID;    String stuName;   int sc

Java排序 Comparable實現Comparable介面

1、首先新建第一個Student類/** * 排序測試 通過實現Comprable的compareTo方法進行排序 */public class Student implements Comparable<Student>{ private String n

Java 物件序列化和反序列化 實現 Serializable 介面

序列化和反序列化的概念 把物件轉換為位元組序列的過程稱為物件的序列化。 把位元組序列恢復為物件的過程稱為物件的反序列化。 物件的序列化主要有兩種用途: 把物件的位元組序列永久地儲存到硬碟上,通常存放在一個檔案中; 在網路上傳送物件的位元組序列。 JDK

java 對ArrayList排序,實現Comparable介面

import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io

Java兩個執行緒交替列印實現Runnable介面

package senTset; //紙張類 public class page { private boolean isWrite = false; //設定一個公共變數來控制執行緒執行 public synchronized void

Java-UDP程式編寫實現組播

1.播報廣播端 package test; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class Weather exten

spring mvc異常統一處理實現HandlerExceptionResolver介面不生效的問題解決

spring mvc異常統一處理常見的有3種方式: 使用 @ ExceptionHandler 註解 實現 HandlerExceptionResolver 介面 使用 @controlleradvice 註解 詳細的使用方法可參考博文:https://blog.c

多執行緒——建立執行緒方法之二實現Runnable介面

/* 需求:簡單的賣票程式。 多個視窗同時買票。 建立執行緒的第二種方式:實現Runnable介面 步驟: 1,定義類實現Runnable介面 2,覆蓋Runnable介面中的run方法。 將執行緒要執行的程式碼存放在該run方法中。 3,通過Thread類建立執

Effective Java 第三版讀書筆記——條款14:考慮實現 Comparable 介面

與本章討論的其他方法不同,compareTo 方法並沒有在 Object 類中宣告。相反,它是 Comparable 介面中的唯一方法。 通過實現 Comparable 介面,一個類表明它的例項有一個自然序( natural ordering )。對實現 Comparable 介面的物件所組成的陣列排序非常簡

java實現Comparable介面和Comparator介面,並重寫compareTo方法和compare方法

實現Comparable介面和Comparator介面,並重寫compareTo方法和compare方法 2016年08月11日 14:39:25 蘇尹 閱讀數:10772更多 個人分類: 學習筆記 實體類:java.lang.Comparable(介面) + coma

Jsoup:實現java專案的服務端之間的通訊 需要開放介面

@Override public Map<String, Object> getbarrierInfoCount(Map<String, Object> param, String signType) throws Exception { Co

[Java]實現Comparable介面不嚴謹導致Comparison method violates its general contract!

/** * 已經將src陣列複製了一份到dest陣列 * low和high是mergesort在陣列中的下標 * off為low相對於下標0的偏移量 */ private static void mergeSort(Object[] src,

Java實現Comparable介面和Comparator介面的排序演算法效率比較

在PAT Basic Level的真題中,有”德才論“這麼一題(點選可開啟題目)。 最開始我是構造了一個學生類,存放學生資訊,實現Comparator介面,遺憾的是,後臺測試時,每一個測試用例皆顯示程式執行超時。 public class Main ... class S

Java程式設計之TreeSet排序兩種解決方法(1)元素自身具備比較功能,元素需要實現Comparable介面覆蓋compare(2)建立根據自定義Person類的name進行排序的Comparator

       當很多人問我讀研到底好不好的時候,我總是說上研很苦逼,讀完研之後都不知道自己能不能找到工作,所以不建議同學們讀研~即使要讀也讀一個985或者211的研究生,這是我肺腑之言。但還有一半我沒說完,讀研的時候你可能會找到你喜歡的活動,會遇到一些願意和你一起玩的玩伴,

java單元測試之如何實現非同步介面的測試案例

測試是軟體釋出的重要環節,單元測試在實際開發中是一種常用的測試方法,java單元測試主要用junit,最新是junit5,本人開發一般用junit4。因為單元測試能夠在軟體模組組合之前儘快發現問題,所以實際開發中投入產出比很高。實際使用難免會遇到非同步操作的介面測試,最常用的情景是別人家的SD

32-多執行緒--概述+Thread類+多執行緒的建立方式繼承Thread類+實現Runnable介面+Runnable介面+執行緒的名稱+執行緒的狀態

一、概述 1、程序:對應的是一個應用程式在記憶體中的所屬空間。程序是不直接執行的,它只是在分配該應用程式的記憶體空間 注:如果一個程式在記憶體中開闢了空間,就代表它在執行。不執行要釋放空間 2、執行緒:程序中的一個負責程式執行的控制單元,也叫執行路徑。一個程序中可以有多個執行路徑,稱之為

java基礎學習總結二十四:slf4j作用及其實現原理

簡單回顧門面模式 slf4j是門面模式的典型應用,因此在講slf4j前,我們先簡單回顧一下門面模式, 門面模式,其核心為外部與一個子系統的通訊必須通過一個統一的外觀物件進行,使得子系統更易於使用。用一張圖來表示門面模式的結構為:   門面模式的核心為Facade即門面

java基礎學習總結二十一:自己寫一個java.lang.reflect.Proxy代理的實現

     動態代理裡面用到了一個類就是java.lang.reflect.Proxy,這個類是根據代理內容為傳入的介面生成代理用的。本文就自己寫一個Proxy類出來,功能和java.lang.reflect.Proxy一樣,傳入介面、代理內容,生成代理。  

WPFS資料繫結要是後臺類物件的屬性值發生改變,通知在“客戶端介面與之繫結的控制元件值”也發生改變需要實現INotitypropertyChanged介面

WPFS資料繫結(要是後臺類物件的屬性值發生改變,通知在“客戶端介面與之繫結的控制元件值”也發生改變需要實現INotitypropertyChanged介面) MainWindow.xaml 1 <Window x:Class="WpfApplication1.MainWindow" 2