Эй, эй, милые милашки, я ваш хороший друг - ошибка. Сегодня я здесь, чтобы популяризировать для вас знания о Java SE. Не прячьтесь, пожалуйста, выслушайте меня и дайте мне немного полезной информации. палец вверх. У меня так много лайков. Это даст вам мотивацию говорить более увлекательно! Итак, выработайте хорошую привычку сначала любить, а потом читать, и не перегружайтесь полезной информацией~
Описание среды: Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8.
В Java-программировании коллекции являются очень важной концепцией. Платформа сбора данных в Java была представлена в Java 2. Платформа коллекций предоставляет набор стандартных интерфейсов, которые можно использовать при работе с набором объектов. Java предоставляет множество различных классов коллекций, каждый из которых имеет разные возможности и способы использования. В этой статье мы представим расширенную коллекцию в Java — TreeSet.
TreeSet — это класс в платформе коллекций Java, который представляет собой упорядоченный и сортируемый класс коллекций. Он реализует интерфейс Set, а базовый уровень реализован на основе красно-черной древовидной структуры данных. TreeSet может обеспечить порядок сортировки элементов, что очень удобно для сценариев, требующих сортировки.
В Java базовая структура данных TreeSet реализована на основе красно-черной древовидной структуры данных. Красно-черное дерево представляет собой приблизительно сбалансированное бинарное дерево поиска, обеспечивающее, что разница высот между левым и правым поддеревьями любого узла не будет превышать двух раз.
В красно-черном дереве каждый узел отмечен красным или черным. Корневой узел дерева черный. Если узел красный, его дочерние узлы должны быть черными (и не обязательно наоборот). На пути от корневого узла к любому пустому узлу количество пройденных черных узлов должно быть одинаковым.
TreeSet предоставляет множество Конструкторов, наиболее часто используемыми из которых являются Конструктор без параметров и Конструктор с параметрами Comparator.
Определение Конструктора без женьшеня следующее:
public TreeSet()
Конструктор с параметром Comparator определяется следующим образом:
public TreeSet(Comparator<? super E> comparator)
Рекомендуется, чтобы при использовании существуиспользоватьTreeSet с параметром Comparator можно было гарантировать, что указанный компаратор будет использоваться при сравнении существующих элементов.
Ниже приведены скриншоты исходного кода:
Код для добавления элемента «Добавить» в TreeSet выглядит следующим образом:
TreeSet<String> set = new TreeSet<>();
set.add("Java");
set.add("Python");
set.add("C++");
Этот код добавит в TreeSet три элемента: Java, Python и C++. Поскольку TreeSet упорядочен, элементы будут отсортированы лексикографически.
Код элемента «Удалить» из TreeSet выглядит следующим образом:
set.remove("Python");
Этот код удалит элементы Python из TreeSet.
Код для определения наличия указанного элемента в TreeSet выглядит следующим образом:
boolean isExist = set.contains("Java");
Этот код определит, есть ли элемент Java в TreeSet. Если он существует, он вернет true, в противном случае — false.
Код для получения первого элемента в TreeSet выглядит следующим образом:
String first = set.first();
Этот код получит первый элемент в TreeSet.
Код для получения последнего элемента в TreeSet выглядит следующим образом:
String last = set.last();
Этот код получит последний элемент в TreeSet.
Ниже приведены скриншоты исходного кода:
TreeSet поддерживает красно-черное дерево на нижнем уровне. В операциях вставки, удаления и поиска в красно-черном дереве временная сложность равна O(log n).
Поскольку красно-черное дерево является упорядоченным двоичным деревом, элементы в TreeSet также упорядочены. При вызове метода добавления TreeSet будет вызван метод вставки красно-черного дерева. В процессе вставки элемент будет вставлен в правильную позицию в соответствии с его размером.
В приведенном выше примере кода мы создали объект TreeSet без параметров. В этом случае TreeSet будет сравнивать метод CompareTo объекта элемента. Если мы хотим использовать другой способ сравнения, вы можете Сортировка. с помощью компаратора。
Компаратор — это функциональный интерфейс, который можно создать с помощью лямбда-выражений. Например, если мы хотим отсортировать по длине строки, мы можем написать:
TreeSet<String> set = new TreeSet<>((a, b) -> a.length() - b.length());
set.add("Java");
set.add("Python");
set.add("C++");
Этот код будет сортироваться по длине строки, поэтому порядок элементов в TreeSet следующий: C++, Java, Python.
Когда нам нужно поддерживать упорядоченный набор и мы хотим иметь возможность эффективно выполнять операции вставки, удаления и поиска, мы можем использовать TreeSet. TreeSet не только реализует интерфейс Set, но также реализует интерфейс SortedSet, поэтому он может гарантировать упорядоченность элементов.
Ниже приводится введение в некоторые важные методы класса TreeSet.
public TreeSet()
Нет женьшеня Конструктор,Создайте пустой объект TreeSet.。
public TreeSet(Comparator<? extends E> comparator)
Конструктор с параметром Comparator,Создайте пустой объект TreeSet.,И используйте указанный компаратор для сортировки.
public boolean add(E e)
КTreeSetсередина Добавить элемент。
public boolean remove(Object o)
Удаляет указанный элемент из TreeSet.
public boolean contains(Object o)
Определите, содержит ли TreeSet указанный элемент.
public E first()
Получите первый элемент в TreeSet.
public E last()
Получите последний элемент в TreeSet.
Ниже приведен простой тестовый пример для тестирования базовой функциональности TreeSet.
package com.demo.javase.day63;
import java.util.TreeSet;
/**
* @Author грибок-ошибка
* @Date 2023-11-06 11:01
*/
public class TreeSetTest {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<>();
set.add("Java");
set.add("Python");
set.add("C++");
System.out.println(set.contains("Java")); // true
System.out.println(set.contains("Ruby")); // false
System.out.println(set.first()); // C++
System.out.println(set.last()); // Python
set.remove("Python");
System.out.println(set.contains("Python")); // false
}
}
Согласно тестам, указанным выше пример,местный Результаты Следующие испытания приведены только для справки, вы также можете изменить их самостоятельно. пример Или добавьте больше тестовых данных или методов тестирования и начните профессионально учиться, чтобы углубить свое понимание.
Согласно тестам, указанным выше пример,существовать Теперь я дам вам глубокую и подробную интерпретацию тестового кода, чтобы большее количество студентов могло понять и углубить свое впечатление.
Этот код представляет собой программу Java, которая в основном демонстрирует использование класса TreeSet для создания сортируемой коллекции и выполнения таких операций, как добавление, запрос и удаление коллекции. Конкретный анализ заключается в следующем:
В этой статье мы представляем расширенную коллекцию Java TreeSet. Начнем с особенностей Представлены TreeSet и базовая реализация, а затем основные операции TreeSetи Сортировка с помощью метод компаратора. Далее мы представили сценарии применения TreeSet, его преимущества и недостатки, а также представили некоторые важные методы класса TreeSet. Наконец, мы также написали простой тестовый например, Протестированный TreeSet.
В этой статье представлена расширенная коллекция Java TreeSet, которая представляет собой упорядоченную и сортируемую коллекцию. Базовая реализация красно-черной древовидной структуры данных TreeSet может быстро выполнять операции вставки, удаления и поиска, а также обеспечивать упорядочивание элементов. Мы можем создать объект TreeSet, используя Конструктор без параметров или Конструктор с параметрами Comparator, а также добавлять, удалять и искать, используя связанные методы. Кроме того, в этой статье также кратко описаны сценарии применения, преимущества, недостатки и важные методы TreeSet, а также представлен простой тест. пример дает демонстрацию.
...
Хорошо, содержание этого выпуска в основном подходит к концу. Если вы хотите узнать больше, вы можете обратиться к этой рубрике Подвести. итог《Навигационная статья руководства «Snowball Learning Java»》,Эта рубрика посвящена созданию самых хардкорных Java Серия обучающего контента с нулевой базой. 🚀 Создавайте качественные хардкорные колонки по всей сети, которые помогут вам обогнать по прямой, каждый может подписаться и продолжить обучение;
Все исходные коды, упомянутые выше, загружены и синхронизированы.существовать「Gitee」,Предоставьте учащимся индивидуальное справочное обучение,Помогите вам освоить его быстрее.
Если вы студент компьютерного факультета,Вы все еще интересуетесь программированием?,Рекомендуется изучить эту колонку напрямую, без каких-либо сомнений.«Снежок, изучение Java»,грибок-ошибка,Все студенты, изучающие эту рубрику,можно приобрести необходимые знания и навыки,Самый быстрый способ начать программировать на Java в Интернете.,как снежный ком,Роллинг все больше и больше,Экспоненциальное улучшение.
наконец,Если эта статья поможет вам,Помогите авторуТри клика, чтобы подписаться, поставить лайк и собрать,Ваша поддержка — моя самая большая мотивация продолжать писать.。 В то же время каждый может подписаться на общедоступный аккаунт: «Дом чудес в круге обезьян». , чтобы узнать больше технических статей того же типа и получить последние вопросы для интервью с интернет-компанией BAT, 4000G бесплатно Электронные книги в формате PDF, шаблоны резюме, технические статьи, документы Markdown и другие массивные материалы.
Я педераст, CSDN | Наггетсы) | infoQ | 51CTO Другие эксперты по блогам сообщества, топ-30 звезд предыдущих блогов, топ-40 самых популярных авторов года Nuggets, топ-12 ежегодных блоггеров 51CTO, Huawei Cloud | Облако Алибаба| Высококлассные авторы из таких сообществ, как Tencent Cloud.,Общее количество поклонников во всей сети15w+ ; Хардкорный общедоступный аккаунт WeChat «Ape Circle Wonder House» приглашает вас присоединиться! Бесплатная проституция, последние вопросы для интервью с интернет-компанией BAT, 4000G Электронные книги в формате PDF, шаблоны резюме и другие массивные материалы.
--End
ЯсуществоватьучаствоватьЯ участвую в пятом выпуске специального учебного лагеря Tencent Technology Creation 2024 с эссе, получившими награды. Приходите и разделите приз со мной!