Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggabungkan Dua Senarai dengan Cekap, Mengalih Keluar Pendua dan Mengekalkan Pesanan?

Bagaimanakah Saya Boleh Menggabungkan Dua Senarai dengan Cekap, Mengalih Keluar Pendua dan Mengekalkan Pesanan?

Mary-Kate Olsen
Lepaskan: 2024-12-27 05:54:13
asal
884 orang telah melayarinya

How Can I Efficiently Merge Two Lists, Removing Duplicates, and Maintaining Order?

Menggabungkan Senarai untuk Hasil Gabungan

Dalam senario ini, anda mempunyai dua senarai rentetan (atau mana-mana jenis arbitrari) dan keinginan untuk menggabungkannya dengan pantas sambil mengekalkan yang asal pesanan. Selain itu, anda ingin menghapuskan sebarang entri pendua dalam senarai yang digabungkan. Walaupun meneliti topik ini, anda belum mengenal pasti penyelesaian yang mudah dan memilih untuk mengelak daripada melaksanakan antara muka yang kompleks.

Satu pendekatan yang berkesan ialah menggunakan kaedah AddRange:

List<string> a = new List<string>();
List<string> b = new List<string>();

a.AddRange(b);
Salin selepas log masuk

Pendekatan ini mengekalkan susunan elemen dalam kedua-dua senarai, memindahkan kandungan b ke dalam a. Walau bagaimanapun, ia tidak mengalih keluar pendua.

Pilihan alternatif yang menangani isu pendua ialah kaedah Union:

var newList = a.Except(b).ToList();
Salin selepas log masuk

Barisan ini menggabungkan unsur a dan b, tidak termasuk sebarang pendua. Hasilnya disimpan dalam senarai baharu bernama newList.

Akhir sekali, jika anda perlu mengekalkan senarai asal, anda boleh menggunakan kaedah Concat:

var newList = a.Concat(b);
Salin selepas log masuk

Operasi ini menghasilkan objek IEnumerable . Ia berulang pada kedua-dua senarai, secara berurutan menghasilkan unsur-unsur mereka dalam susunan yang muncul. Jika anda memerlukan senarai sebagai output, anda boleh menukar IEnumerable kepada Senarai menggunakan kaedah ToList.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Dua Senarai dengan Cekap, Mengalih Keluar Pendua dan Mengekalkan Pesanan?. 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