Crie um map ordenado em Java
Um map é uma estrutura de dados em Java que armazena pares de chave e valor. O map é uma interface
presente na hierarquia Collection
. Essas chaves são exclusivas, portanto, nenhuma chave duplicada é permitida; no entanto, as variáveis mapeadas para a chave podem ter valores duplicados. Classes como HashMap
, LinkedHashMap
e TreeMap
implementam a interface Map
.
Classifique o map usando a classe TreeMap
em Java
Abaixo, o programa demonstra a ordem do map no programa Java.
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
map.put("Third", 1);
map.put("First", 2);
map.put("Second", 3);
for (String key : map.keySet()) {
System.out.println(key + " ,ID = " + map.get(key));
}
}
}
A classe TreeMap
classifica os valores do map em ordem crescente. Ele também implementa a interface SortedMap
internamente, de modo que uma instância do map é criada usando uma nova palavra-chave.
O tipo de dados dentro do map de árvore é especificado no momento da instanciação. A chave Map
é do tipo String
e seu valor é do tipo Integer
.
A função put
insere os pares de valores-chave no map de árvore. Agora, um loop for-each
é definido para iterar no map. Em Java, a iteração direta sobre o map não é possível. Assim, as chaves do map são inicialmente convertidas em uma instância Set
.
A função map.keySet
retorna o Set
de chaves presentes no map. Esta função está na classe TreeMap
e retorna a visualização ordenada das chaves presentes. A função get
obtém o valor correspondente à chave.
Abaixo está a saída em ordem crescente.
First, ID = 2 Second, ID = 3 Third, ID = 1
Criar uma ordem de map usando funções Java 8
Java 8 fornece suporte para programação funcional que permite aos usuários trabalhar na cadeia de funções.
Streams
é uma interface no pacote java.util
que fornece uma facilidade para trabalhar sobre as operações sequenciais em uma única instrução. A função Streams
funciona no pipeline onde um emissor emite dados; ele é filtrado, processado, transformado e muito mais, dependendo das necessidades dos usuários.
package F09;
import static java.util.AbstractMap.SimpleEntry;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MapOrdering {
public static void main(String[] args) {
Map<String, String> mapSortedByKey =
Stream
.of(new SimpleEntry<>("key3", "value1"), new SimpleEntry<>("key1", "value2"),
new SimpleEntry<>("key2", "value3"))
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldVal, newValue) -> oldVal, LinkedHashMap::new));
System.out.println();
System.out.print("Ordered List: ");
for (String s1 : mapSortedByKey.keySet()) {
System.out.print(" " + s1);
}
}
}
A interface Stream
fornece várias funções e obtém a sua implementação em diferentes classes para trabalhar sobre elas. Aqui, o fluxo de pares de valores-chave é formado usando a classe new SimpleEntry
. Os valores são inseridos na função of
para formar um fluxo.
Na série em cadeia, a função sorted
é chamada. A função usa uma instância Comparator
para organizar as chaves em uma sequência dependendo da ordem definida. A função comparingByKey
retorna o comparador que compara a chave em ordem ascendente natural.
A função sorted
finalmente retorna um fluxo de valores organizados em ordem crescente. A função collect
da classe Stream
coleta os valores de map fornecidos em uma nova instância LinkedHashMap
. A classe preserva a ordem de inserção da sequência fornecida. A função usa a instância Collector
como parâmetro.
O primeiro parâmetro é uma função toMap
do fornecedor que cria um novo contêiner. O segundo parâmetro é BiConsumer
que acumula o valor, e o último parâmetro é BiConsumer
que atua como um combinador que mescla os resultados. Assim, o comando LinkedHashMap::new
combina o resultado e retorna a instância formada.
A instância mapSortedByKey
agora contém os elementos do map sequencial que são iterados usando o loop for-each
acima. As chaves de map resultantes são impressas na saída padrão abaixo.
Ordered List : key1 key2 key3
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedInArtigo relacionado - Java Map
- Crie um map em Java
- Diferença entre hashmap e map em Java
- Como converter JSON para mapa em Java
- Como Iterar Sobre Cada Elemento do Mapa em Java
- Como obter a chave do valor em Java Hashmap