Convertir une liste en map en Java
- Liste à map à l’aide de ArrayList et HashMap
-
Convertir la liste en map en utilisant
Stream
etCollectors
en Java - Convertir la liste en map avec trier et collecter en Java
Une List
permet de maintenir une collection ordonnée d’objets. Un objet Map
mappe les clés aux valeurs. En Java, il existe plusieurs méthodes pour convertir une Liste d’objets en une Carte
. Dans cet article, nous en apprendrons quelques-uns.
Liste à map à l’aide de ArrayList et HashMap
L’interface List
de Java permet une collection ordonnée d’objets et stocke les valeurs en double. Il offre des méthodes basées sur l’index pour mettre à jour, supprimer, insérer et rechercher des éléments. Nous pouvons également stocker des valeurs nulles dans la List
. ArrayList
, LinkedList
sont quelques-unes des classes qui implémentent l’interface List
.
L’interface Map
de Java mappe des clés uniques sur des valeurs et ne peut pas contenir de clés en double. Il dispose de méthodes utiles pour rechercher, mettre à jour et insérer des éléments basés sur cette clé unique. La classe HashMap
implémente l’interface Map
.
La classe Book
a trois variables membres bookName
, author
, id
et des méthodes getter pour ces attributs. Nous avons remplacé la méthode toString()
pour formater les données de la classe Book
. Un objet de la classe Book
est créé. La méthode add()
de l’interface List
insère des objets dans la bookList
.
Nous créons un objet Map
en utilisant la classe HashMap
, qui contient la clé de type Integer
et la valeur de type Book
. Nous utilisons une boucle for
améliorée dans laquelle nous utilisons la méthode put()
et ajoutons toutes les données Book
de la bookList
à la map.
La méthode put()
prend deux arguments. Nous avons accédé à l’attribut id
en appelant getId()
et en l’utilisant comme clé et en stockant l’objet de classe de livre b
comme valeur pour cette clé particulière. Nous pouvons imprimer l’objet bookMap
comme indiqué dans la sortie.
class Book {
int id;
String bookName;
String author;
public Book(int id, String bookName, String author) {
this.id = id;
this.bookName = bookName;
this.author = author;
}
public int getId() {
return id;
}
public String getAuthor() {
return author;
}
public String getBookName() {
return bookName;
}
@Override
public String toString() {
return "Book{"
+ " bookName='" + bookName + '\'' + ", author='" + author + '\'' + '}';
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
List<Book> bookList = new ArrayList<>();
bookList.add(new Book(1, "Barney's Version", "Mordecai Richler"));
bookList.add(new Book(2, "The Unsettlers", "Mark Sundeen"));
bookList.add(new Book(3, "The Debt to Pleasure", "John Lanchester"));
Map<Integer, Book> bookMap = new HashMap();
for (Book b : bookList) {
bookMap.put(b.getId(), b);
}
System.out.println("BookMap " + bookMap.toString());
}
}
Production :
BookMap {1=Book{ bookName="Barney's Version", author='Mordecai Richler'}, 2=Book{ bookName='The Unsettlers', author='Mark Sundeen'}, 3=Book{ bookName='The Debt to Pleasure', author='John Lanchester'}}
Convertir la liste en map en utilisant Stream
et Collectors
en Java
Il est facile d’utiliser la fonction lambda avec Stream
et Collectors
dans Java 8 pour réaliser la tâche ci-dessus. La méthode stream() renvoie un Stream
d’objets de la classe Book
de la bookList
.
Pour collecter ces éléments, nous utilisons la méthode collect()
de la classe Stream
. Les éléments seront collectés dans une map, nous avons donc utilisé ce Collectors.toMap()
. La clé est l’id
et stocke l’objet Book
en tant que valeur. En imprimant le result1
en sortie, nous pouvons voir que nous avons converti bookList
en une map.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<Book> bookList = new ArrayList<>();
bookList.add(new Book(1, "Barney's Version", "Mordecai Richler"));
bookList.add(new Book(2, "The Unsettlers", "Mark Sundeen"));
bookList.add(new Book(3, "The Debt to Pleasure", "John Lanchester"));
Map<Integer, String> result1 =
bookList.stream().collect(Collectors.toMap(Book::getId, Book::toString));
System.out.println("Result 1 : " + result1);
}
}
Production :
Result 1 : {1=Book{ bookName="Barney's Version", author='Mordecai Richler'}, 2=Book{ bookName='The Unsettlers', author='Mark Sundeen'}, 3=Book{ bookName='The Debt to Pleasure', author='John Lanchester'}}
Convertir la liste en map avec trier et collecter en Java
Nous pouvons trier le flux de l’objet de classe Book
de bookList
en comparant les id
dans l’ordre inverse. On appelle d’abord comparingInt()
où on passe le id
qui est de type int
puis on inverse l’ordre en appelant la méthode reverse()
.
Nous pouvons collecter le flux trié sur un objet de classe Map
. S’il y a une clé en double, qui est 2
dans notre cas, alors la map prendra la nouvelle valeur pour la même key
qui explique (oldValue, newValue) -> newValue
.
import java.util.*;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<Book> bookList = new ArrayList<>();
bookList.add(new Book(1, "Barney's Version", "Mordecai Richler"));
bookList.add(new Book(2, "The Unsettlers", "Mark Sundeen"));
bookList.add(new Book(2, "The Debt to Pleasure", "John Lanchester"));
Map result1 = bookList.stream()
.sorted(Comparator.comparingInt(Book::getId).reversed())
.collect(Collectors.toMap(Book::getId, Book::toString,
(oldValue, newValue) -> newValue, LinkedHashMap::new));
System.out.println("Result 1 : " + result1);
}
}
Production :
Result 1 : {2=Book{ bookName='The Debt to Pleasure', author='John Lanchester'}, 1=Book{ bookName="Barney's Version", author='Mordecai Richler'}}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedInArticle connexe - Java List
- Convertir les valeurs de map en une liste en Java
- Convertir une collection en liste en Java
- Trier la liste chaînée manuelle avec l'algorithme de tri à bulles en Java
- Trier une liste par ordre alphabétique en Java
- Conversion de Stream en Liste en Java