⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 integercomparator.java

📁 java阿里巴巴代码
💻 JAVA
字号:
/**
 * IntegerComparator.java
 * 
 * This class is used along with TreeMap
 * When put a key into a TreeMap, TreeMap will replace the old having the same key with the new 
 * but when you use this class, you can control this case
 * though the key is the same, the Comparator will return false if you set the flag 'takeEqual=true'
 */

package tools.util;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeMap;

public class IntegerComparator implements Comparator
{
	private int takeEqual = 0;
	private boolean desc	= false;
	
	/**
	 * IntegerComparator, Constructor
	 * @param boolean takeEqual, if true, return 1 when equal, 
	 */
	public IntegerComparator(boolean takeEqual)
	{
		this.takeEqual = (takeEqual==true) ? 1 : 0;
	}

	/**
	 * IntegerComparator, Constructor
	 * @param boolean takeEqual, if true, return 1 when equal, 
	 * @param boolean desc
	 */
	public IntegerComparator(boolean takeEqual, boolean desc)
	{
		this.takeEqual = (takeEqual==true) ? 1 : 0;
		this.desc		= desc;
	}
	
	/**
	 * compare, compare 2 objects
	 * @param Object o1 
	 * @param Object o2
	 * @return int, 1 ==> o1 > o2, -1 ==> o1 < o2, 0 ==> o1 = o2
	 */
	public int compare(Object o1, Object o2)
	{
		int int1 = ((Integer)o1).intValue();
		int int2 = ((Integer)o2).intValue();
		if (!desc)		// ASC
		{
			if(int1 < int2 ) return -1;
			if(int1 > int2 ) return 1;
		}
		else			// DESC
		{
			if(int1 < int2 ) return 1;
			if(int1 > int2 ) return -1;
		}
		return takeEqual;
	}
	
	static public void main(String[] args)
	{
		test(true);
		test(false);
		
		test(true, true);
		test(true, false);
		
		test(false, true);
		test(false, false);
	}
	
	static private void test(boolean flag)
	{
		System.out.println("\nflag: " + flag);
		TreeMap map = new TreeMap(new IntegerComparator(flag));
		Integer i1 = new Integer(1);
		Integer i2 = new Integer(2);
		Integer i3 = new Integer(2);
		Integer i4 = new Integer(4);
		map.put(i1, i1);
		map.put(i2, i2);
		map.put(i3, i3);
		map.put(i4, i4);
		
		for(Iterator it=map.values().iterator(); it.hasNext();)
		{
			Integer i = (Integer)it.next();
			System.out.println("i: " + i.intValue());
		}
	}
	
	static private void test(boolean flag, boolean desc)
	{
		System.out.println("\nflag: " + flag + " desc: " + desc);
		TreeMap map = new TreeMap(new IntegerComparator(flag, desc));
		Integer i1 = new Integer(1);
		Integer i2 = new Integer(2);
		Integer i3 = new Integer(2);
		Integer i4 = new Integer(4);
		map.put(i1, i1);
		map.put(i2, i2);
		map.put(i3, i3);
		map.put(i4, i4);
		
		for(Iterator it=map.values().iterator(); it.hasNext();)
		{
			Integer i = (Integer)it.next();
			System.out.println("i: " + i.intValue());
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -