Rumah > Java > javaTutorial > Bagaimana untuk Melaksanakan Perbandingan Rentetan Versi Tepat di Java?

Bagaimana untuk Melaksanakan Perbandingan Rentetan Versi Tepat di Java?

Mary-Kate Olsen
Lepaskan: 2024-11-16 07:39:03
asal
474 orang telah melayarinya

How to Implement Accurate Version String Comparisons in Java?

Cara Membandingkan Rentetan Versi Dengan Tepat dalam Java

Membandingkan nombor versi dalam Java boleh menjadi tugas yang sukar, terutamanya apabila bilangan titik maksimum keluaran tidak diketahui. Walaupun perbandingan rentetan ringkas menggunakan compareTo tidak mencukupi, penyelesaian tersuai diperlukan untuk mengendalikan kerumitan ini.

Salah satu penyelesaian sedemikian melibatkan mencipta kelas Versi tersuai yang melaksanakan antara muka Sebanding. Begini cara ia boleh dilakukan:

public class Version implements Comparable<Version> {

    private String version;

    public final String get() {
        return this.version;
    }

    public Version(String version) {
        if(version == null)
            throw new IllegalArgumentException("Version can not be null");
        if(!version.matches("[0-9]+(\.[0-9]+)*"))
            throw new IllegalArgumentException("Invalid version format");
        this.version = version;
    }

    @Override public int compareTo(Version that) {
        if(that == null)
            return 1;
        String[] thisParts = this.get().split("\.");
        String[] thatParts = that.get().split("\.");
        int length = Math.max(thisParts.length, thatParts.length);
        for(int i = 0; i < length; i++) {
            int thisPart = i < thisParts.length ?
                Integer.parseInt(thisParts[i]) : 0;
            int thatPart = i < thatParts.length ?
                Integer.parseInt(thatParts[i]) : 0;
            if(thisPart < thatPart)
                return -1;
            if(thisPart > thatPart)
                return 1;
        }
        return 0;
    }

    // ...
}
Salin selepas log masuk

Kelas Versi terdiri daripada pembina yang mengesahkan format versi dan kaedah compareTo yang membandingkan dua kejadian berdasarkan rentetan versinya. Kaedah compareTo dengan anggun mengendalikan nilai nol dan untuk nilai bukan nol, ia membahagi rentetan versi kepada bahagian, membandingkannya satu demi satu.

Menggunakan kelas tersuai ini, membandingkan nombor versi menjadi mudah:

Version a = new Version("1.1");
Version b = new Version("1.1.1");
a.compareTo(b) == -1; // true
Salin selepas log masuk

Penyelesaian ini boleh dipercayai mengendalikan perbandingan versi dengan bilangan keluaran mata yang berbeza-beza, memastikan ketepatan dan konsisten.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perbandingan Rentetan Versi Tepat di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan