LinkedHashSet внутри Java работает по принципу комбинации хэш-таблицы и связанного списка. LinkedHashSet использует хэш-таблицу для быстрого доступа к элементам, а также использует связанный список для сохранения порядка добавления элементов. Как и HashSet, LinkedHashSet содержит массив элементов и список связанных списков (bucket), где каждый элемент помещается в соответствующий bucket на основе его хэш-кода. Однако, в отличие от HashSet, LinkedHashSet также содержит ссылки на предыдущий и следующий элемент в связанном списке. При добавлении элемента в LinkedHashSet, сначала вычисляется его хэш-код, затем элемент добавляется в bucket, соответствующий этому хэш-коду. Если bucket пустой, элемент просто добавляется в него и создается новая ссылка на элемент в связанном списке. Если bucket уже содержит элементы, то новый элемент добавляется в конец списка связанных элементов, а ссылка на последний элемент в списке обновляется. При поиске элемента в LinkedHashSet, сначала вычисляется его