Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Dominando Java LinkedHashSet: Recursos, Métodos e Exemplos Práticos

Java LinkedHashSet

Neste tutorial, aprenderemos sobre a classe Java LinkedHashSet e seus métodos com a ajuda de exemplos.

A classe LinkedHashSet do framework de coleções do Java fornece funcionalidades de ambas as estruturas de dados hashtable e lista encadeada.

Ela implementa a interface Set.

Elementos do LinkedHashSet são armazenados em tabelas hash similares ao HashSet.

No entanto, linked hash sets mantêm uma lista duplamente encadeada internamente para todos os seus elementos. A lista encadeada define a ordem em que elementos são inseridos nas tabelas hash.

Criar um LinkedHashSet

Para criar um linked hash set, devemos importar o pacote java.util.LinkedHashSet primeiro.

Uma vez importado o pacote, aqui está como podemos criar linked hash sets no Java.

// LinkedHashSet com capacidade 8 e fator de carga 0.75
LinkedHashSet<Integer> numeros = new LinkedHashSet<>(8, 0.75);

Aqui, criamos um linked hash set chamado numeros.

Observe, a parte new LinkedHashSet<>(8, 0.75). Aqui, o primeiro parâmetro é capacidade e o segundo parâmetro é fatorDeCarga.

Capacidade e fator de carga padrão

É possível criar um linked hash set sem definir sua capacidade e fator de carga. Por exemplo,

// LinkedHashSet com capacidade e fator de carga padrão
LinkedHashSet<Integer> numeros1 = new LinkedHashSet<>();

Por padrão,

Criando LinkedHashSet a Partir de Outras Coleções

Aqui está como podemos criar um linked hash set contendo todos os elementos de outras coleções.

import java.util.LinkedHashSet;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        // Criando um arrayList de números pares
        ArrayList<Integer> numerosPares = new ArrayList<>();
        numerosPares.add(2);
        numerosPares.add(4);
        System.out.println("ArrayList: " + numerosPares);
        // Criando um LinkedHashSet a partir de um ArrayList
        LinkedHashSet<Integer> numeros = new LinkedHashSet<>(numerosPares);
        System.out.println("LinkedHashSet: " + numeros);
    }
}

Saída

ArrayList: [2, 4] LinkedHashSet: [2, 4]

Métodos do LinkedHashSet

A classe LinkedHashSet fornece métodos que nos permitem realizar várias operações no linked hash set.

Inserir Elementos no LinkedHashSet

Por exemplo,

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numeroPar = new LinkedHashSet<>();
        // Usando método add()
        numeroPar.add(2);
        numeroPar.add(4);
        numeroPar.add(6);
        System.out.println("LinkedHashSet: " + numeroPar);
        LinkedHashSet<Integer> numeros = new LinkedHashSet<>();
        // Usando método addAll()
        numeros.addAll(numeroPar);
        numeros.add(5);
        System.out.println("Novo LinkedHashSet: " + numeros);
    }
}

Saída

LinkedHashSet: [2, 4, 6] Novo LinkedHashSet: [2, 4, 6, 5]

Acessar Elementos do LinkedHashSet

Para acessar os elementos de um linked hash set, podemos usar o método iterator(). Para usar este método, devemos importar o pacote java.util.Iterator. Por exemplo,

import java.util.LinkedHashSet;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numeros = new LinkedHashSet<>();
        numeros.add(2);
        numeros.add(5);
        numeros.add(6);
        System.out.println("LinkedHashSet: " + numeros);
        // Chamando o método iterator()
        Iterator<Integer> iterar = numeros.iterator();
        System.out.print("LinkedHashSet usando Iterator: ");
        // Acessando elementos
        while(iterar.hasNext()) {
            System.out.print(iterar.next());
            System.out.print(", ");
        }
    }
}

Saída

LinkedHashSet: [2, 5, 6] LinkedHashSet usando Iterator: 2, 5, 6,

Nota:

Remover Elementos do HashSet

Por exemplo,

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numeros = new LinkedHashSet<>();
        numeros.add(2);
        numeros.add(5);
        numeros.add(6);
        System.out.println("LinkedHashSet: " + numeros);
        // Usando o método remove()
        boolean valor1 = numeros.remove(5);
        System.out.println("5 foi removido? " + valor1);
        boolean valor2 = numeros.removeAll(numeros);
        System.out.println("Todos elementos removidos? " + valor2);
    }
}

Saída

LinkedHashSet: [2, 5, 6] 5 foi removido? true Todos elementos removidos? true

Operações de Conjunto

Os vários métodos da classe LinkedHashSet também podem ser usados para realizar várias operações de conjunto.

União de Conjuntos

Para realizar a união entre dois conjuntos, podemos usar o método addAll(). Por exemplo,

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numerosPares = new LinkedHashSet<>();
        numerosPares.add(2);
        numerosPares.add(4);
        System.out.println("LinkedHashSet1: " + numerosPares);
        LinkedHashSet<Integer> numeros = new LinkedHashSet<>();
        numeros.add(1);
        numeros.add(3);
        System.out.println("LinkedHashSet2: " + numeros);
        // União de dois conjuntos
        numeros.addAll(numerosPares);
        System.out.println("União é: " + numeros);
    }
}

Saída

LinkedHashSet1: [2, 4] LinkedHashSet2: [1, 3] União é: [1, 3, 2, 4]

Interseção de Conjuntos

Para realizar a interseção entre dois conjuntos, podemos usar o método retainAll(). Por exemplo

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numerosPrimos = new LinkedHashSet<>();
        numerosPrimos.add(2);
        numerosPrimos.add(3);
        System.out.println("LinkedHashSet1: " + numerosPrimos);
        LinkedHashSet<Integer> numerosPares = new LinkedHashSet<>();
        numerosPares.add(2);
        numerosPares.add(4);
        System.out.println("LinkedHashSet2: " + numerosPares);
        // Interseção de dois conjuntos
        numerosPares.retainAll(numerosPrimos);
        System.out.println("Interseção é: " + numerosPares);
    }
}

Saída

LinkedHashSet1: [2, 3] LinkedHashSet2: [2, 4] Interseção é: [2]

Diferença de Conjuntos

Para calcular a diferença entre os dois conjuntos, podemos usar o método removeAll(). Por exemplo,

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numerosPrimos = new LinkedHashSet<>();
        numerosPrimos.add(2);
        numerosPrimos.add(3);
        numerosPrimos.add(5);
        System.out.println("LinkedHashSet1: " + numerosPrimos);
        LinkedHashSet<Integer> numerosImpares = new LinkedHashSet<>();
        numerosImpares.add(1);
        numerosImpares.add(3);
        numerosImpares.add(5);
        System.out.println("LinkedHashSet2: " + numerosImpares);
        // Diferença entre LinkedHashSet1 e LinkedHashSet2
        numerosPrimos.removeAll(numerosImpares);
        System.out.println("Diferença: " + numerosPrimos);
    }
}

Saída

LinkedHashSet1: [2, 3, 5] LinkedHashSet2: [1, 3, 5] Diferença: [2]

Subconjunto

Para verificar se um conjunto é subconjunto de outro conjunto ou não, podemos usar o método containsAll(). Por exemplo,

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numeros = new LinkedHashSet<>();
        numeros.add(1);
        numeros.add(2);
        numeros.add(3);
        numeros.add(4);
        System.out.println("LinkedHashSet1: " + numeros);
        LinkedHashSet<Integer> numerosPrimos = new LinkedHashSet<>();
        numerosPrimos.add(2);
        numerosPrimos.add(3);
        System.out.println("LinkedHashSet2: " + numerosPrimos);
        // Verificar se numerosPrimos é subconjunto de numeros
        boolean resultado = numeros.containsAll(numerosPrimos);
        System.out.println("LinkedHashSet2 é subconjunto de LinkedHashSet1? " + resultado);
    }
}

Saída

LinkedHashSet1: [1, 2, 3, 4] LinkedHashSet2: [2, 3] LinkedHashSet2 é subconjunto de LinkedHashSet1? true

Outros Métodos do LinkedHashSet

MétodoDescrição
clone()Cria uma cópia do LinkedHashSet
contains()Busca o LinkedHashSet pelo elemento especificado e retorna resultado booleano
isEmpty()Verifica se o LinkedHashSet está vazio
size()Retorna o tamanho do LinkedHashSet
clear()Remove todos os elementos do LinkedHashSet

Para aprender mais sobre métodos do LinkedHashSet, visite Java LinkedHashSet (documentação oficial do Java).

LinkedHashSet Vs. HashSet

Ambos LinkedHashSet e HashSet implementam a interface Set. No entanto, existem algumas diferenças entre eles.

LinkedHashSet Vs. TreeSet

Aqui estão as principais diferenças entre LinkedHashSet e TreeSet:

Java

  1. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  2. Comentários em Java: Tipos, Uso e Boas Práticas
  3. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  4. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  5. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  6. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  7. Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
  8. Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
  9. Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
  10. Entendendo o Java Vector: Uso, Recursos e Comparação com ArrayList