La Lista es una interfaz secundaria de la Colección. Es una colección ordenada de objetos en los que se pueden almacenar valores duplicados. Dado que List conserva el orden de inserción, permite el acceso posicional y la inserción de elementos. La interfaz de lista se implementa mediante las clases ArrayList , LinkedList , Vector y Stack .
La interfaz java.util.Map representa un mapeo entre una clave y un valor. La interfaz Mapa no es un subtipo de la interfaz Colección . Por lo tanto se comporta un poco diferente al resto de tipos de colección.
Ejemplo:
Input: List : [1="1", 2="2", 3="3"] Output: Map : {1=1, 2=2, 3=3} Input: List : [1="Geeks", 2="for", 3="Geeks"] Output: Map : {1=Geeks, 2=for, 3=Geeks}
A continuación se muestran varias formas de convertir Lista a Mapa en Java. Para ello, se supone que cada elemento de la Lista tiene un identificador que se utilizará como clave en el Mapa resultante.
- Usando por objeto de la lista:
Acercarse:
- Obtener la Lista para convertirla en Mapa
- Crear un mapa vacío
- Recorra los elementos de la lista y agregue cada uno de ellos al Mapa.
- Devolver el Mapa formado
// Java program for list convert in map
// with the help of Object method
import
java.util.ArrayList;
import
java.util.List;
import
java.util.Map;
import
java.util.HashMap;
// create a list
class
Student {
// id will act as Key
private
Integer id;
// name will act as value
private
String name;
// create curstuctor for reference
public
Student(Integer id, String name)
{
// assign the value of id and name
this
.id = id;
this
.name = name;
}
// return private variable id
public
Integer getId()
{
return
id;
}
// return private variable name
public
String getName()
{
return
name;
}
}
// main class and method
public
class
GFG {
// main Driver
public
static
void
main(String[] args)
{
// create a list
List<Student>
lt =
new
ArrayList<Student>();
// add the member of list
lt.add(
new
Student(
1
,
"Geeks"
));
lt.add(
new
Student(
2
,
"For"
));
lt.add(
new
Student(
3
,
"Geeks"
));
// create map with the help of
// Object (stu) method
// create object of Map class
Map<Integer, String> map =
new
HashMap<>();
// put every value list to Map
for
(Student stu : lt) {
map.put(stu.getId(), stu.getName());
}
// print map
System.out.println(
"Map : "
+ map);
}
}
Producción:Map : {1=Geeks, 2=For, 3=Geeks}
- Uso del método Collectors.toMap(): este método incluye la creación de una lista de los objetos de los estudiantes y utiliza Collectors.toMap() para convertirlo en un mapa.
Acercarse:- Obtener la Lista para convertirla en Mapa
- Convierta la Lista en flujo usando el método List.stream()
- Crea un mapa con la ayuda del método Collectors.toMap()
- Recopile el mapa formado usando el método stream.collect()
- Devolver el Mapa formado
// Java program for list convert in map
// with the help of Collectors.toMap() method
import
java.util.ArrayList;
import
java.util.LinkedHashMap;
import
java.util.List;
import
java.util.stream.Collectors;
// create a list
class
Student {
// id will act as Key
private
Integer id;
// name will act as value
private
String name;
// create curstuctor for reference
public
Student(Integer id, String name)
{
// assign the value of id and name
this
.id = id;
this
.name = name;
}
// return private variable id
public
Integer getId()
{
return
id;
}
// return private variable name
public
String getName()
{
return
name;
}
}
// main class and method
public
class
GFG {
// main Driver
public
static
void
main(String[] args)
{
// create a list
List<Student> lt =
new
ArrayList<>();
// add the member of list
lt.add(
new
Student(
1
,
"Geeks"
));
lt.add(
new
Student(
2
,
"For"
));
lt.add(
new
Student(
3
,
"Geeks"
));
// create map with the help of
// Collectors.toMap() method
LinkedHashMap<Integer, String>
map = lt.stream()
.collect(
Collectors
.toMap(
Student::getId,
Student::getName,
(x, y)
-> x +
", "
+ y,
LinkedHashMap::
new
));
// print map
map.forEach(
(x, y) -> System.out.println(x +
"="
+ y));
}
}
Producción:1=Geeks 2=For 3=Geeks
- Creando MultiMap usando Collectors.groupingBy():
Acercarse:
- Obtener la Lista para convertirla en Mapa
- Convierta la Lista en flujo usando el método List.stream()
- Crea un mapa con la ayuda del método Collectors.groupingBy()
- Recopile el mapa formado usando el método stream.collect()
- Devolver el Mapa formado
// Java program for list convert in map
// with the help of Collectors.groupingBy() method
import
java.util.*;
import
java.util.stream.Collectors;
// create a list
class
Student {
// id will act as Key
private
Integer id;
// name will act as value
private
String name;
// create curstuctor for reference
public
Student(Integer id, String name)
{
// assign the value of id and name
this
.id = id;
this
.name = name;
}
// return private variable id
public
Integer getId()
{
return
id;
}
// return private variable name
public
String getName()
{
return
name;
}
}
// main class and method
public
class
GFG {
// main Driver
public
static
void
main(String[] args)
{
// create a list
List<Student> lt =
new
ArrayList<Student>();
// add the member of list
lt.add(
new
Student(
1
,
"Geeks"
));
lt.add(
new
Student(
1
,
"For"
));
lt.add(
new
Student(
2
,
"Geeks"
));
lt.add(
new
Student(
2
,
"GeeksForGeeks"
));
// create map with the help of
// Object (stu) method
// create object of Multi Map class
// create multimap and store the value of list
Map<Integer, List<String> >
multimap = lt
.stream()
.collect(
Collectors
.groupingBy(
Student::getId,
Collectors
.mapping(
Student::getName,
Collectors
.toList())));
// print the multiMap
System.out.println(
"MultiMap = "
+ multimap);
}
}
Producción:MultiMap = {1=[Geeks, For], 2=[Geeks, GeeksForGeeks]}