Rumah >Java >javaTutorial >Bagaimana untuk Menghuraikan Rentetan URI ke dalam Koleksi Nilai Nama dengan Cekap di Jawa?

Bagaimana untuk Menghuraikan Rentetan URI ke dalam Koleksi Nilai Nama dengan Cekap di Jawa?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 09:28:10666semak imbas

How to Efficiently Parse a URI String into a Name-Value Collection in Java?

Menghuraikan Rentetan URI ke dalam Koleksi Nilai-Nama

Tugas penghuraian URI melibatkan mengekstrak parameter individu dan nilai sepadannya daripada pertanyaan URI rentetan. Ini adalah keperluan biasa apabila berurusan dengan URL dalam aplikasi web dan permintaan API.

Untuk menghuraikan rentetan URI ke dalam koleksi nilai nama dalam Java, pertimbangkan pilihan berikut:

  • Menggunakan Perpustakaan Pihak Ketiga:

Perpustakaan seperti Apache Commons Lang atau Google Jambu batu menyediakan kaedah untuk penghuraian URI. Perpustakaan ini menawarkan pendekatan yang ringkas dan mudah, mengendalikan penyahkodan URL dan tugas biasa lain.

  • Penghuraian Manual tanpa Perpustakaan:

Jika anda lebih suka pendekatan yang lebih praktikal, anda boleh melaksanakan logik penghuraian anda sendiri seperti berikut:

public static Map<String, String> splitQuery(URL url) throws UnsupportedEncodingException {
    Map<String, String> queryPairs = new LinkedHashMap<>();
    String query = url.getQuery();
    String[] pairs = query.split("&");
    for (String pair : pairs) {
        int idx = pair.indexOf("=");
        queryPairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
    }
    return queryPairs;
}

Ini kaedah membahagikan rentetan pertanyaan kepada pasangan individu, menyahkod URL mereka dan menyimpannya dalam Peta. Anda boleh mendapatkan semula nilai individu menggunakan map.get("paramName").

Mengendalikan Penyahkodan URL:

Ingat bahawa nilai rentetan pertanyaan mungkin dikodkan URL. Anda boleh menggunakan kelas URLDecoder untuk menukarnya kepada plaintext.

Mengendalikan Kes Khas:

Logik penghuraian di atas menganggap bahawa setiap parameter mempunyai nilai tunggal. Walau bagaimanapun, sesetengah URI membenarkan berbilang nilai untuk parameter yang sama. Untuk mengendalikan kes ini, anda boleh mengubah suai kaedah penghuraian untuk mencipta Peta yang setiap parameter dipetakan ke Senarai nilai.

API Strim Java 8:

Dalam Java 8, anda boleh menggunakan strim untuk memudahkan proses penghuraian. Coretan kod berikut menunjukkan pendekatan ini:

public Map<String, List<String>> splitQuery(URL url) {
    if (Strings.isNullOrEmpty(url.getQuery())) {
        return Collections.emptyMap();
    }
    return Arrays.stream(url.getQuery().split("&"))
            .map(this::splitQueryParameter)
            .collect(Collectors.groupingBy(SimpleImmutableEntry::getKey, LinkedHashMap::new, mapping(Map.Entry::getValue, toList())));
}

Versi kaedah ini mengembalikan Peta yang setiap kunci mewakili parameter dan nilai yang sepadan ialah Senarai nilai parameter.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Rentetan URI ke dalam Koleksi Nilai Nama dengan Cekap di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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