三个
Topic sourceimport java.util.Comparator;import java.util.PriorityQueue;import java.util.Queue;public class Demo06 { public static void main(String[] args) { Queue<User> q = new PriorityQueue<>(new UserComparator()); // 添加3个元素到队列: q.offer(new User("Bob", "A10")); q.offer(new User("Alice", "A2")); q.offer(new User("Boss", "V1")); q.offer(new User("Ceo1", "C10")); q.offer(new User("Ceo", "C10")); q.offer(new User("Cfo", "C20")); System.out.println(q.poll()); //Boss/V1 System.out.println(q.poll()); //Ceo1/C10 System.out.println(q.poll()); //Ceo/C10 System.out.println(q.poll()); //Cfo/C20 System.out.println(q.poll()); //Alice/A2 System.out.println(q.poll()); //Bob/A10 }}class UserComparator implements Comparator<User> { public int compare(User u1, User u2) { if (u1.number.charAt(0) == u2.number.charAt(0)) { // 如果两人的号都是A开头或者都是V开头,比较号的大小: char[] u1chars = u1.number.toCharArray(); char[] u2chars = u2.number.toCharArray(); char[] u1Newchar = new char[u1chars.length - 1]; char[] u2Newchar = new char[u2chars.length - 1]; for (int i = 1, j = 0; i < u1chars.length; i++) { u1Newchar[j] = u1chars[i]; j++; } for (int i = 1, j = 0; i < u2chars.length; i++) { u2Newchar[j] = u2chars[i]; j++; } String u1NumStr = new String(u1Newchar); String u2NumStr = new String(u2Newchar); int u1Num = Integer.parseInt(u1NumStr); int u2Num = Integer.parseInt(u2NumStr); return Integer.compare(u1Num,u2Num); } else { if ((u1.number.charAt(0) == 'V')) { return -1; } else if (u1.number.charAt(0) == 'C' && u2.number.charAt(0) == 'A') { return -1; } else { return 1; } } }}class User { public final String name; public final String number; public User(String name, String number) { this.name = name; this.number = number; } public String toString() { return name + "/" + number; }}
- 1
波猫747