Rumah > pembangunan bahagian belakang > C++ > Mengapa Kamus C# Tidak Menjamin Susunan Elemen dan Bagaimana Saya Boleh Memastikan Susunan Abjad?

Mengapa Kamus C# Tidak Menjamin Susunan Elemen dan Bagaimana Saya Boleh Memastikan Susunan Abjad?

Mary-Kate Olsen
Lepaskan: 2025-01-17 19:01:10
asal
357 orang telah melayarinya

Why Doesn't C# Dictionary Guarantee Element Order, and How Can I Ensure Alphabetical Ordering?

Memahami Susunan Kamus C# (atau Kekurangannya)

Ramai pembangun C# tersalah anggap bahawa elemen Dictionary dikembalikan dalam susunan sisipan. Ini tidak betul. Contoh berikut menggambarkan ini:

<code class="language-csharp">// Dictionary declaration
private Dictionary<string, string> _Dictionary = new Dictionary<string, string>();

// Add elements
_Dictionary.Add("orange", "1");
_Dictionary.Add("apple", "4");
_Dictionary.Add("cucumber", "6");
_Dictionary["banana"] = "7";
_Dictionary["pineapple"] = "7";

// Iterate and observe the order (non-deterministic)
foreach (KeyValuePair<string, string> kvp in _Dictionary)
{
    Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}</code>
Salin selepas log masuk

Keluaran tidak dapat diramalkan kerana Dictionary menggunakan jadual cincang, yang mengutamakan pencarian kunci yang cekap daripada mengekalkan susunan sisipan. Urutan lelaran tidak dijamin dan akan berbeza-beza.

Menguatkuasakan Susunan Abjad dengan SortedDictionary

Jika anda memerlukan elemen diisih mengikut abjad, gunakan SortedDictionary sebaliknya. Kelas ini mengekalkan susunan yang diisih berdasarkan pembanding kekunci (lalai adalah mengikut abjad untuk rentetan).

<code class="language-csharp">// SortedDictionary declaration
private SortedDictionary<string, string> _SortedDictionary = new SortedDictionary<string, string>();

// Add elements
_SortedDictionary.Add("orange", "1");
_SortedDictionary.Add("apple", "4");
_SortedDictionary.Add("cucumber", "6");
_SortedDictionary.Add("banana", "7");
_SortedDictionary.Add("pineapple", "7");

// Iterate and observe the alphabetical order
foreach (KeyValuePair<string, string> kvp in _SortedDictionary)
{
    Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}</code>
Salin selepas log masuk

Ini akan menghasilkan output disusun mengikut abjad secara konsisten. Perlu diingat bahawa SortedDictionary mempunyai overhed prestasi berbanding Dictionary, jadi gunakannya hanya apabila pesanan diperlukan.

Atas ialah kandungan terperinci Mengapa Kamus C# Tidak Menjamin Susunan Elemen dan Bagaimana Saya Boleh Memastikan Susunan Abjad?. 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