Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Но предположим, что вам нужен список List<T> с этими цветами, а не мно­ жество нashSet<T>. В приведенном ниже фрагменте показано, как создать но­

вый список List<T>, инициализированный множеством comЫned:

примрr, "eш: ,гUим, н уЗим т,р тш ,

тl тl

цц

( An1Sимш т,) ш г=

 

гAn

 

Пересечение множеств

Представьте, что вам нужно работать в предвыборной кампании президен­ та США с примерно десятком исходных кандидатов от каждой из основных партий. Немало из них являются сенаторами. Как получить список кандида­ тов-сенаторов? Метод IntersectWith ( ) класса HashSet<T> позволяет получить элементы, присутствующие одновременно в списке кандидатов в президенты и в списке сенаторов:

прим

рum,кeш:

,г:им,

n уЗим р

)

,g

 

 

 

p у lт

гAn

ш( An1Sимтш,

An,им Anrшпшим,An,ш

шш,

т d тCAn

:шuим: у "

 

им, г:

( ш:им1S

тпrAnимирм у dт, ,

гAn

ш( An1Sим

,имш

рш=т")п шAnимтd у,'шг шуd

т1ргим,

т l

 

 

 

 

=

=

=

= =

==

=

 

 

 

 

=

==

 

=

 

=

=

Врезультате мы получим "Clinton", "McCain" и "Obama", поскольку только

они присутствуют в обоих списках.

Вприведенном далее фрагменте кода используется метод S ymme t r i c ExceptWith ( ) , который дает результат, противоположный методу Inter­ sectWith ( ) . В то время как пересечение дает только те элементы, которые при­ сутствуют в обоих списках, SyrnrnetricExceptWith ( ) дает те элементы из обоих

списков, которые мССз1ОзОт1лО

ОрАюкртрядрH дя Выитоге мы получаем

множество из элементов 5, 3, 1 ,

1 2 и I О:

ГЛАВА 6 Глава для коллекционеров 167

Использование стеков здесь немного нестандартное, потому что код добав­ ляет все элементы в стек одновременно, а не вносит каждый из них по отдель­ ности. Корректные операции со стеком заключаются во внесении элементов в стек по одному и в таком же их снятии со стека.

Обратите внимание на то, что все продемонстрированные методы HashSet<T> имеют тип void, т.е. они не возвращают значения. Таким

образом, результат непосредственно отображается в множестве, для подРоБно,в­сгиагО m, которого вызван метод; в приведенном выше фрагменте это множе-

ство nonoverlapping.

Получение разности

Противоположная задача заключается в том, чтобы удалить любые элемен­ ты, которые имеются в обоих списках, так, чтобы в конечном итоге получить в результирующем списке только те элементы, которые отсутствуют в другом списке. Это выполняется с помощью метода ExceptWith ( ) класса HashSet<T>:

срим r,р" eх:

,г:им,

н ыИим (

 

,

,

 

 

тl sж

1

,

(:,им

Sу ,

 

,.

 

 

 

:е :

ч : D :

l :

Я : ):

1 : ; : V: :1 s ж

 

им,

1

,

(:,им

Sн и, м

=им l Э

 

 

36,

(:им

S им:у , .

 

 

 

 

 

 

 

цц

,

им,

36,

(:им

S

: : D :

Я :

1 : V : : : :

: D :

: Я

a

(,т

 

e:

3n ,

 

 

 

у ,

иму:

,

 

 

 

:

цц

 

 

 

 

 

 

 

п, : o D o Я : . "

 

 

 

 

им:у "-,

 

(,т : e 3ну , ,,й

 

 

 

 

 

 

.рх,ш(3

н :им им :им

им=у,s

 

 

 

 

 

 

лt

 

сримрr, уeх:

,гUим, н и мBкр6

х:им1 н s, V

 

 

 

 

 

 

 

 

 

 

После этого кода из unique оказываются исключены его элементы, которые имеются в queue (1, 3, 5, 7 и 9) и в конечном итоге в unique остаются только элементы 11, 1 3 и 15.

саiю ЧАСТЬ 1 Основы программирования на С#

Соседние файлы в папке Информатика