Интерфейс Set в Java

Благодаря классам реализующим Set можно создать массив в котором элементы не повторяются.

HashSet это как hashmap, только без значений, только ключи.

В hashset могут храниться только уникальные ключи, благодаря уже ранее упомянутому hashcode, который есть у каждого элемента добавляемого в hashset.

Поясним на примере:

import java.util.*; public class Set { public static void main(String[] args) { // создаем коллекцию HashSet hSet = new HashSet(); // добавление элемента hSet.add(“Sunday”); hSet.add(“Monday”); hSet.add(“Sunday”); hSet.add(“Tuesday”); // удаление элемента hSet.remove(“Monday”); // в hashset нету get поэтому сначала нужно преобразовать // в массив а потом извлекать либо использовать iterator String[] hSetArr = hSet.toArray(new String[hSet.size()]); for(int i = 0; i < hSetArr.length; i++) { System.out.println(hSetArr[i]); } // проверка на наличие элемента в списке System.out.println(hSet.contains("Tuesday")); // Как можно увидеть по результатам в массиве всего один Sunday } }

Вывод:


TreeSet

TreeSet – хранит элементы в виде дерева, что позволяет быстрее искать элементы.

Все элементы отсортированы и не повторяются.

TreeSet лучше всего подходит для нахождения диапазонов.

Пример программы:

import java.util.*; public class Set { public static void main(String[] args) { // создаем коллекцию TreeSet tSet = new TreeSet(); // добавление элемента tSet.add(“D”); tSet.add(“B”); tSet.add(“A”); tSet.add(“C”); tSet.add(“E”); // удаление элемента tSet.remove(“C”); // В TreeSet нету get поэтому сначала нужно преобразовать // в массив а потом извлекать либо использовать iterator String[] tSetArr = tSet.toArray(new String[tSet.size()]); for(int i = 0; i < tSetArr.length; i++) { System.out.println(tSetArr[i]); } // проверка на наличие элемента в списке System.out.println(tSet.contains("П")); // для нахождения диапазона System.out.println(tSet.tailSet("B")); System.out.println(tSet.headSet("B")); // Как можно увидеть по результатам в массиве // всего один В и элементы хранятся в алфавитном порядке } }

Вывод:


LinkedHashSet

LinkedHashSet – хранит элементы в порядке вставки и элементы не повторяются.

Опять таки, лучше использовать когда элементы часто вставляются/удаляются.

Пример программы:

import java.util.*; public class Set { public static void main(String[] args) { // создаем коллекцию LinkedHashSet ltSet = new LinkedHashSet(); // добавление элемента ltSet.add(“D”); ltSet.add(“B”); ltSet.add(“A”); ltSet.add(“C”); ltSet.add(“B”); // удаление элемента ltSet.remove(“C”); // LinkedHashSet нету get поэтому сначала нужно преобразовать // в массив а потом извлекать либо использовать iterator String[] ltSetArr = ltSet.toArray(new String[ltSet.size()]); for(int i = 0; i< ltSetArr.length; i++) { System.out.println(ltSetArr[i]); } // проверка на наличие элемента в списке System.out.println(ltSet.contains("B")); //Как можно увидеть по результатам в масиве всего один В // элементы хранятся в порядке вставки } }

Вывод:

Потоки ввода/вывода. PrintWriter и PrintStream

Разбираем PrintWriter и PrintStream в Java: в чем разница, когда использовать. Примеры вывода данных в консоль с помощью этих потоков.
Time to read: 10

FileStream в Java: чтение и запись файлов

FileInputStream и FileOutputStream в Java: как читать и записывать файлы побайтно. Пример преобразования строки в байты и обратно.
Time to read: 7

DataStream в Java

DataInputStream и DataOutputStream в Java: работа с байтовыми потоками примитивных типов. Примеры чтения/записи чисел через файловый ввод-вывод.
Time to read: 8