📄 integercomparator.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 + -