1 of 24

Множества

Interface SET

2 of 24

3 of 24

  1. Множество

4 of 24

5 of 24

2. Операции с множества

а) Обединение

6 of 24

б) Сечение

7 of 24

в) разлика

8 of 24

Пример

9 of 24

3. Интерфейсът Set

  • Аналогичен е с List, но тук стойностите на елементите не могат да се повтарят(уникални).
  • Позволява добавяне, търсене, премахване на елементи и др. вградени методи.

В java, интерфейсът Sеt се имплементира, чрез следните класове:

10 of 24

а) HashSet - линеен списък с уникални стойности. Не спазва ред на въвеждане и ред на подреждане.

  • деклариране -

(Hash)Set <тип на данните> set1= new HashSet<>();

  • добавяне на елементи - методът add - проверява дали елемента се съдържа в множестото, ако го има- не се добавя(false)

11 of 24

  • Отпечатване на множеството-

  • изтриване на елемент - remove()
  • Обединяване на множества addAll(Collections)
  • Сечение на множества retainAll(Collections)
  • Разлика/допълнение/ на множества - removeAll(Collections) (first-second)

12 of 24

Задача 1

Дадени са две числови редици:

A={3,5,2,22,31,8};

B = {5,9,8,12};

а) Обединете двете редици, като няма повтарящи се стойности.

б) Изведете общите елементи за двете редици.

в) Изведете елементите на множество А, които не се срещат в мн.B

13 of 24

b) TreeSet -сортира множеството

Ако не посочим правило за сортиране, сортировката е във възходящ ред.

И тук може да използваме Comparable (Comparator).

1-> Сортира възходящо

2-> Сортира по зададени от нас критерии

14 of 24

Задача

Дадени са две числови редици с произволни цели числа

Сортирайте елементите на редиците във възходящ ред, като няма повтарящи се елементи.

Обединете редиците в нова, сортирана в низходящ ред редица.

15 of 24

Задача

16 of 24

Алгоритъм

  1. Създаваме множество
  2. Въвеждаме цели числа, 0 за край
  3. Запомняме добавянето на елемент в променлива от тип boolean b
  4. Ако елемента не множе да се добави(b==false), т. е. вече го има в множеството, го изтриваме оттам.
  5. Печатаме множеството. В него са останали само елементите, които са въведени нечетен брой пъти.

17 of 24

18 of 24

Задача

Даден e списък с думи.

Съставете програма, която отделя повтарящите се думи от неповтарящите се.

Резултатите да бъдат сортирани по следният начин:

Вход: all

text

all

text

text

one

two

book

end

Ако не можем да добавим в уникални, добавяме в дублиращи.

От множеството на уникалните, изваждаме дублиращите

19 of 24

20 of 24

Зареждане на множество от списък

21 of 24

3- ти начин- Зареждане чрез обхождане

22 of 24

Задача

Имаме списък с данни - поръчка на мебели.

Прочетете файла и изведете следните справки:

  1. Имената на поръчаните модели, подредени азбучно и техният брой
  2. Датите на които има приключени поръчки

23 of 24

Указания:

  1. Създайте клас: mebeli

order(String)�dateor(LocalDate)�name(String)�price(int)�datepr(LocalDate)�dateend((LocalDate)�isfinished(String)

  • Създайте Тест клас, в който да прочетете данните от файла, съхранете ги в списък.

LocalDate.parse(M[1]);LocalDate.parse(M[4]);LocalDate.parse(M[5]);

LocalDate dateor = LocalDate.parse(S[1], DateTimeFormatter.ofPattern("d.M.yyyy", new Locale("bg", "BG")));-

при непълни български дати

  • Създайте подходящи структури, чрез които да направите необходимите справки.

24 of 24

ресурси

Указания: 1) Прочетете файловете и съхранете в множества.

2) Изведете сечението на множествата музей и изложба. - MI1 направете копие на музей

3) Намерете разликата на множествата: музей- (сечението на множествата музей и изложба) - MI2-> M.remove(MI1)

4) Намерете разликата на множествата: изложба- (сечението на множествата музей и изложба)- MI3 -> IZ.remove(MI1)

5) Обединете Mi1+Mi2+Mi3

6) Намерете разликата между множествата all-(Mi1+Mi2+Mi3)