MyTetra Share
Делитесь знаниями!
Интерфейс Set и класс HashSet
Время создания: 01.11.2019 09:31
Раздел: INFO - Development - JAVA - Collection
Запись: wwwlir/Tetra/master/base/157257190121tv2wpz6x/text.html на raw.githubusercontent.com

Интерфейс Set расширяет интерфейс Collection и представляет набор уникальных элементов. Set не добавляет новых методов, только вносит изменения унаследованные. В частности, метод add() добавляет элемент в коллекцию и возвращает true, если в коллекции еще нет такого элемента.

Обобщенный класс HashSet представляет хеш-таблицу. Он наследует свой функционал от класса AbstractSet, а также реализует интерфейс Set.

Хеш-таблица представляет такую структуру данных, в которой все объекты имеют уникальный ключ или хеш-код. Данный ключ позволяет уникально идентифицировать объект в таблице.

Для создания объекта HashSet можно воспользоваться одним из следующих конструкторов:

  • HashSet(): создает пустой список
  • HashSet(Collection<? extends E> col): создает хеш-таблицу, в которую добавляет все элементы коллекции col
  • HashSet(int capacity): параметр capacity указывает начальную емкость таблицы, которая по умолчанию равна 16
  • HashSet(int capacity, float koef): параметр koef или коэффициент заполнения, значение которого должно быть в пределах от 0.0 до 1.0, указывает, насколько должна быть заполнена емкость объектами прежде чем произойдет ее расширение. Например, коэффициент 0.75 указывает, что при заполнении емкости на 3/4 произойдет ее расширение.

Класс HashSet не добавляет новых методов, реализуя лишь те, что объявлены в родительских классах и применяемых интерфейсах:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

import java.util.HashSet;

 

public class Program{

      

    public static void main(String[] args) {

          

        <String> states = new HashSet<String>();

          

        // добавим в список ряд элементов

        states.add("Germany");

        states.add("France");

        states.add("Italy");

        // пытаемся добавить элемент, который уже есть в коллекции

        boolean isAdded = states.add("Germany");

        System.out.println(isAdded);    // false

        

        System.out.printf("Set contains %d elements \n", states.size());    // 3

          

        for(String state : states){

          

            System.out.println(state);

        }

        // удаление элемента

        states.remove("Germany");

          

        // хеш-таблица объектов Person

        HashSet<Person> people = new HashSet<Person>();

        people.add(new Person("Mike"));

        people.add(new Person("Tom"));

        people.add(new Person("Nick"));

        for(Person p : people){

          

            System.out.println(p.getName());

        }

    }

}

class Person{

      

    private String name;

    public Person(String value){

          

        name=value;

    }

    String getName(){return name;}

}


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования