import java.util.Comparator; import java.util.PriorityQueue; public class solution2 { /** * @param args */ @SuppressWarnings("unchecked") PriorityQueue<String> queue = new PriorityQueue<String>(2,new comparatorString()); public static void main(String[] args) { // TODO Auto-generated method stub solution2 s = new solution2(); s.queue.add("cab"); s.queue.add("abc"); s.queue.add("s"); s.queue.add("A"); s.queue.add("a"); s.queue.add("Bdsf"); for(String str : s.queue) System.out.println(str); } } class comparatorString implements Comparator<String>{ @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub //if (o1 instanceof String); return o1.compareTo(o2); } /* * compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的 差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方 全比较完,这时就比较字符的长度. 例: String s1 = "abc"; String s2 = "abcd"; String s3 = "abcdfg"; String s4 = "1bcdfg"; String s5 = "cdfg"; System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1) System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3) System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48) System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2) * * * */ }
原文:http://www.cnblogs.com/leetcode/p/3551221.html