Discuss / Java / 截断字符串之后比较数值大小

截断字符串之后比较数值大小

Topic source

缪哈桑

#1 Created at ... [Delete] [Delete and Lock User]

import java.util.Comparator;

import java.util.PriorityQueue;

import java.util.Queue;

public class Main {

    public static void main(String[] args) {

        Queue<User> q = new PriorityQueue<>(new UserComparator());

        // 添加3个元素到队列:

        q.offer(new User("Bob", "A1"));

        q.offer(new User("Alice", "A2"));

        q.offer(new User("Boss", "V1"));

        q.offer(new User("Ben", "A11"));

        System.out.println(q.poll()); // Boss/V1

        System.out.println(q.poll()); // Bob/A1

        System.out.println(q.poll()); // Alice/A2

        System.out.println(q.poll()); // null,因为队列为空

    }

}

class UserComparator implements Comparator<User> {

    public int compare(User u1, User u2) {

        if (u1.number.charAt(0) == u2.number.charAt(0)) {

            // 如果两人的号都是A开头或者都是V开头,比较号的大小:

            var new_u1_number = Integer.parseInt(u1.number.substring(1));

            var new_u2_number = Integer.parseInt(u2.number.substring(1));

            return new_u1_number-new_u2_number;

        }

        if (u1.number.charAt(0) == 'V') {

            // u1的号码是V开头,优先级高:

            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

Reply