porovnání dvou arraylistů   otázka

ASP.NET WebForms

Zdravím, mám dva arraylisty (libovolných velikostí), potřebuji porovnat jejich hodnoty, pokud se některá hodnota z prvního arraylistu nevyskytuje ve druhém, tak potřebuji udělat nějakou akci. Všude sem našel pouze opačný případ (tj. u hodnot které se schodují proveď nějakou akci), to by se řešilo pomocí funkce

CompareTo

já ale potřebuji hodnoty které se neschodují.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Co takhle podmínkou?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
If Not a.CompareTo(b) Then

End If

To posluží k porovnání stejně dlouhých arraylistů, respektive bude provedeno, pokud se neshodují.

Pokud chcete zjistit, zda je kratší arraylist obsažen v delším, iterujte prvky kratšího a na větším zavolejte Contains(prvek_z_kratsiho)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Mám mnohem elegantnější řešení. Použijte LINQ. Místo primitivního ArrayListu použijte něco co je Enumerable (např. obyčejné pole) a potom prostě a jednoduše zavolejte pole1.Intersect(pole2) a dostanete množinu lišících se prvků. Pokud je nutné porovnávat prvky podle nějakých složitějších kritérií, implementujte u příslušného prvku rozhraní IEquatable(Of T). Pole samozřejmě mohou mít různou velikost.

nahlásit spamnahlásit spam 5 / 5 odpovědětodpovědět

Intersect podle mě vrací průnik, tedy to, co je v obou částech společné.

Jedině že by člověk pak vzal každou část a zavolal na ní .Except(prunik).

Anebo je obě seřadit a udělat si to sám, není to zas tak těžké. Případně pokud jde jen o výsledek Ano/Ne, existuje metoda SequenceEquals.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback