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
Mary-Kate Olsenasal
2025-01-17 19:01:10401semak imbas

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>

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>

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!

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