Comparable, CompareTo

Kategori: Java , 14 Temmuz 2019 , JanFranco


İki değişkeni compareTo methodu ile karşılaştırabiliriz. Örneğin s1 adında bir String tanımladık. s1.compareTo(s2) şeklinde bir kullanım yaparsak, s1 Stringinin alfabetik olarak s2 Stringinden büyük olması durumunda method 1 sayısını return edecektir. Tam tersi durumda da -1. Eğer iki String aynı ise 0 return edilecektir. Görelim:


public static void compare(String s1, String s2) {
	int compare = s1.compareTo(s2);
	if(compare == -1) {
		System.out.println("s1 < s2");
	}
	else if(compare == 1) {
		System.out.println("s1 > s2");
	}
	else {
		System.out.println("s1 == s2");
	}
}

public static void main(String[] args){
	
	String s1 = "Jan";
	String s2 = "Khan";
	
	compare(s1, s2);
}
Bu kodun çıktısında s1 < s2 yazısını görürüz. -1, 1, 0 bazen kafa karıştırıcı olabilir. Bu nedenle bir fonksiyon yazdık. Normalde zorunda değiliz. Şimdi de bir sınıf oluşturalım. O sınıftan iki obje oluşturalım ve o iki objeyi karşılaştıralım:

class Player implements Comparable<Player>{
	
	private String name;
	private int score;
	
	public Player(String name, int score) {
		this.name = name;
		this.score = score;
	}

	@Override
	public int compareTo(Player o) {
		if (this.score > o.score){
			return 1;
		}
		else if(this.score < o.score) {
			return -1;
		}
		
		return 0;
	}
	
	public String toString() {
		return this.name + " - " + this.score;
	}
	
}
Fark ettiyseniz sınıfı tanımlarken implements Comparable yazdık. Bunun anlamı şu, Comparable interface'sini implemente et ve methodlarını override et. compareTo methodu override edildi. Sınıfın score değişkenine göre bir sıralama yaptık. Kullanalım:

Player p1 = new Player("JanFranco", 123456789);
Player p2 = new Player("Jane Franco", 999);

int compare = p1.compareTo(p2);
if(compare == 0) {
	System.out.println("p1 = p2");
}
else if(compare == 1) {
	System.out.println("p1 > p2");
}
else {
	System.out.println("p1 < p2");
}
Bu kodun çıktısında p1 > p2 yazısını görürüz. Tüm kodlar:


class Player implements Comparable<Player>{
	
	private String name;
	private int score;
	
	public Player(String name, int score) {
		this.name = name;
		this.score = score;
	}

	@Override
	public int compareTo(Player o) {
		if (this.score > o.score){
			return 1;
		}
		else if(this.score < o.score) {
			return -1;
		}
		
		return 0;
	}
	
	public String toString() {
		return this.name + " - " + this.score;
	}
	
}

public class Main_class {
	
	public static void compare(String s1, String s2) {
		int compare = s1.compareTo(s2);
		if(compare == -1) {
			System.out.println("s1 < s2");
		}
		else if(compare == 1) {
			System.out.println("s1 > s2");
		}
		else {
			System.out.println("s1 == s2");
		}
	}
	
	public static void main(String[] args){
		
		String s1 = "Jan";
		String s2 = "Khan";
		
		compare(s1, s2);
		
		Player p1 = new Player("JanFranco", 123456789);
		Player p2 = new Player("Jane Franco", 999);
		
		int compare = p1.compareTo(p2);
		if(compare == 0) {
			System.out.println("p1 = p2");
		}
		else if(compare == 1) {
			System.out.println("p1 > p2");
		}
		else {
			System.out.println("p1 < p2");
		}
	}
	
}


Sonraki Yazı: Comparator, Compare
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın