Key-Value Pair並べ替え——すべてのタイプに対応しています。

1406 ワード

科学研究では、よくキーを並べてkey(またはvalue)の正順または逆順に並べ替えることを発見しました。簡単な工具類を書きます。
1.まずKeyValue Pair類を定義し、KとVはいつも型を採用しています。どんな種類にも対応できます。後で使うために。
class KeyValuePair<K extends Comparable<K>, V extends Comparable<V>> implements
		Comparable<KeyValuePair<K, V>> {
	K key;
	V value;

	public KeyValuePair(K key, V value) {
		this.key = key;
		this.value = value;
	}

	//        key value        
	@Override
	public int compareTo(KeyValuePair<K, V> o) {
		return -value.compareTo(o.getValue());
	}

	/**
	 * @return the key
	 */
	public K getKey() {
		return key;
	}

	/**
	 * @return the value
	 */
	public V getValue() {
		return value;
	}

	@Override
	public String toString() {
		return "[" + key + "," + value + "]";
	}
}
2. TreeSetの赤と黒の木の原理でKeyValuePairを並べ替えます。以下はkeyをStringタイプ、valueをIntegerタイプとし、valueの逆順に並べ替えます。コードによると次の通りです。
public class KeyValuePairSort {
	public static void main(String[] args) {
		SortedSet<KeyValuePair<String, Integer>> ts = new TreeSet<KeyValuePair<String, Integer>>();
		ts.add(new KeyValuePair<String, Integer>("a", 3));
		ts.add(new KeyValuePair<String, Integer>("c", 6));
		ts.add(new KeyValuePair<String, Integer>("b", 2));
		System.out.println(ts);
	}
}
3.運転出力は以下の通りです。
  [c,6],[a,3],[b,2]