Java中將ArrayList轉換為HashMap
在Java中,List是一個子介面類,它也可以表示集合。它是一個有序集合,包含可以排序的重複值物件。Java ArrayList是一個集合框架,因為它位於java.util包中,並提供Java中的動態陣列元素。
對於ArrayList,我們不必指定列表的大小。另一方面,HashMap<K, V>是一個Java集合,可以在java.util包中找到。它包含資料值作為(鍵, 值)對。基本上,有兩種不同的方法可以使用Java將ArrayList轉換為HashMap:
使用ArrayList迭代
使用ArrayList迭代和LinkedHashMap
這裡有一些關於這個過程的一般示例:
Input As A List : [1="1", 2="2", 3="3"]
Output As A Map : {1=1, 2=2, 3=3}
Input As A List : [1="Java", 2="for", 3="JavaScript"]
Output As A Map : {1=Java, 2=for, 3=JavaScript}
Input : Mercedes, Audi, BMW, Harley Davidson, Triumph
{Car=[Mercedes, Audi, BMW], Bike=[Harley Davidson, Triumph]}
將ArrayList轉換為HashMap的演算法
在這個可能的演算法中,我們將向您展示如何對陣列節點進行轉換處理,使其成為一組雜湊對映。使用此演算法,我們將構建一些Java語法來廣泛瞭解問題陳述。
步驟1 - 開始該過程。
步驟2 - 宣告和匯入一些Java包。
步驟3 - 建立一個公共列表。
步驟4 - 宣告一些鍵值對。
步驟5 - 為引用值建立一個建構函式。
步驟6 - 分配已宣告鍵的值。
步驟7 - 返回一些私有變數ID。
步驟8 - 宣告一個公共主類和方法。
步驟9 - 宣告引數字串。
步驟10 - 建立一個ArrayList。
步驟11 - 使用資料元素填充列表值。
步驟12 - 建立和宣告一個對映值。
步驟13 - 宣告物件方法。
步驟14 - 建立物件對映值。
步驟15 - 為每個資料元素宣告並將其新增到對映中。
步驟16 - 列印對映值並終止該過程。
將ArrayList轉換為HashMap的語法
ArrayList<Product> productList = new ArrayList<Product>();
productList = getProducts();
Map<String, Product> urMap =
yourList.stream().collect(Collectors.toMap(Product::getField1,
Function.identity()));
HashMap<String, Product> productMap = new HashMap<String, Product>();
for (Product product : productList) {
productMap.put(product.getProductCode(), product);
}
for (Product p: productList) { s.put(p.getName(), p); }
for(Product p : productList){
s.put(p.getProductCode() , p);
}
在上面這個可能的語法中,我們嘗試向您展示如何對陣列節點進行轉換處理,使其成為一組雜湊對映。透過這些語法,我們將構建一些Java程式碼,以高效的方式解決問題陳述。
遵循的方法
方法1 - 使用convertArrayListToHashMap()、list、Collectors.toMap()、Collectors.groupingBy()和直接迭代方法的Java程式,該程式將ArrayList轉換為HashMap
方法2 - 使用Java 8 Stream和ASCII字元表方法的將列表轉換為HashMap的Java程式
方法1
使用ConvertArrayListToHashMap()、List、Collectors.toMap()、Collectors.groupingBy()和直接迭代方法將ArrayList轉換為HashMap。
使用ConvertArrayListToHashMap()方法
在這個可能的方法中,我們將應用convertArrayListToHashMap()方法來執行將ArrayList轉換為一組HashMap的轉換。
class Color{
private String name;
private String code;
public Color(String name, String code){
this.name = name;
this.code = code;
}
@Override
public String toString() {
return name + "=" + code;
}
//Declare the getters and setters method
}
示例
//Java program by using of convertArrayListToHashMap() method directly which converts ArrayList to Hashmap
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class ARBRDD{
public static void main(String[] args){
ArrayList<String> languageList
= new ArrayList<>(Arrays.asList("INDIA", "BANGLADESH", "Mitali","Bandhan", "Maitree"));
System.out.println("----------#---ArrayList Is Here---#------------");
for (String language : languageList){
System.out.println(language);
}
System.out.println("-----------$---HashMap Is Here---$-------------");
HashMap<String, Integer> languageMap =
convertArrayListToHashMap(languageList);
for (Map.Entry<String, Integer> entry : languageMap.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
private static HashMap<String, Integer>
convertArrayListToHashMap(ArrayList<String> arrayList){
HashMap<String, Integer> hashMap = new HashMap<>();
for (String str : arrayList) {
hashMap.put(str, str.length());
}
return hashMap;
}
}
輸出
----------#---ArrayList Is Here---#------------ INDIA BANGLADESH Mitali Bandhan Maitree -----------$---HashMap Is Here---$------------- Maitree : 7 Mitali : 6 BANGLADESH : 10 INDIA : 5 Bandhan : 7
使用ArrayList迭代和LinkedHashMap方法
在這個可能的方法中,我們將應用迭代方法和雜湊方法來執行將ArrayList轉換為一組HashMap的轉換。
示例
// Java program by using convertArrayListToHashMap() method directly converts ArrayList to HashMap with ArrayList Iteration and LinkedHashMap
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.*;
public class ARBRDD{
public static void main(String[] args){
ArrayList<String> languageList
= new ArrayList<>(Arrays.asList(
"KOLKATA", "ESPLANADE", "RAJABAZAR", "SALTLAKE", "DUMDUM"));
System.out.println("----------#---ArrayList Is Here---#------------");
for (String language : languageList) {
System.out.println(language);
}
System.out.println("-----------&---HashMap is here---&-------------");
HashMap<String, Integer> languageMap
= convertArrayListToHashMap(languageList);
for (Map.Entry<String, Integer> entry :
languageMap.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
private static HashMap<String, Integer>
convertArrayListToHashMap(ArrayList<String>
arrayList){
LinkedHashMap<String, Integer> linkedHashMap
= new LinkedHashMap<>();
for (String str : arrayList) {
linkedHashMap.put(str, str.length());
}
return linkedHashMap;
}
}
輸出
----------#---ArrayList Is Here---#------------ KOLKATA ESPLANADE RAJABAZAR SALTLAKE DUMDUM -----------&---HashMap is here---&------------- KOLKATA : 7 ESPLANADE : 9 RAJABAZAR : 9 SALTLAKE : 8 DUMDUM : 6
使用List方法
在這個可能的方法中,我們將應用Java Lists方法來執行將ArrayList轉換為一組HashMap的轉換。
示例
// Java program by using convertArrayListToHashMap() method directly converts ArrayList to HashMap with ArrayList Iteration and LinkedHashMap by object of list
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
class Student {
private Integer id;
private String name;
public Student(Integer id, String name){
this.id = id;
this.name = name;
}
public Integer getId(){
return id;
}
public String getName(){
return name;
}
}
public class ARBRDD {
public static void main(String[] args){
List<Student>
lt = new ArrayList<Student>();
lt.add(new Student(071001, "ARB"));
lt.add(new Student(161097, "RDD"));
lt.add(new Student(100522, "ARBRDD"));
Map<Integer, String> map = new HashMap<>();
for (Student stu : lt) {
map.put(stu.getId(), stu.getName());
}
System.out.println("Map Is Here: " + map);
}
}
輸出
Map Is Here: {29185=ARB, 161097=RDD, 100522=ARBRDD}
使用Collectors.toMap()方法
在這個可能的方法中,我們將應用Collectors.toMap()方法來執行將ArrayList轉換為一組HashMap的轉換。
示例
//Java program for list convert in HashMap with the help of java.util.LinkedHashMap and Collectors.toMap() method
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.stream.Collectors;
class Student {
private Integer id;
private String name;
public Student(Integer id, String name){
this.id = id;
this.name = name;
}
public Integer getId(){
return id;
}
public String getName(){
return name;
}
}
public class ARBRDD {
public static void main(String[] args){
List<Student> lt = new ArrayList<>();
lt.add(new Student(071001, "ARB"));
lt.add(new Student(161097, "RDD"));
lt.add(new Student(100522, "ARBRDD"));
LinkedHashMap<Integer, String>
map = lt.stream()
.collect(
Collectors
.toMap(
Student::getId,
Student::getName,
(x, y)
-> x + ", " + y,
LinkedHashMap::new));
map.forEach(
(x, y) -> System.out.println(x + "=" + y));
}
}
輸出
29185=ARB 161097=RDD 100522=ARBRDD
使用Collectors.groupingBy()方法
在這個可能的方法中,我們將應用Collectors.groupingBy()方法來執行將ArrayList轉換為一組HashMap的轉換。
示例
//Java program for list convert in HashMap with the help of Collectors.groupingBy() method
import java.util.*;
import java.util.stream.Collectors;
import java.util.HashMap;
class Student {
private Integer id;
private String name;
public Student(Integer id, String name){
this.id = id;
this.name = name;
}
public Integer getId(){
return id;
}
public String getName(){
return name;
}
}
public class ARBRDD {
public static void main(String[] args){
List<Student> lt = new ArrayList<Student>();
lt.add(new Student(071001, "ARB"));
lt.add(new Student(161097, "RDD"));
lt.add(new Student(100522, "ARBRDD"));
lt.add(new Student(180423, "RDDARB"));
Map<Integer, List<String> >
multimap = lt
.stream()
.collect(
Collectors
.groupingBy(
Student::getId,
Collectors
.mapping(
Student::getName,
Collectors
.toList())));
System.out.println("////MultiMap Is Here//// " + multimap);
}
}
輸出
////MultiMap Is Here//// {29185=[ARB], 180423=[RDDARB], 100522=[ARBRDD], 161097=[RDD]}
方法2
使用Java 8 Stream和ASCII字元表方法。
使用Java 8 Stream方法
在這個可能的方法中,我們將應用Java 8 Stream方法來執行將ArrayList轉換為一組HashMap的轉換。
colors.stream().collect(Collectors.toMap(x -> x.getName(),x -> x.getCode())); colors.stream().collect(Collectors.toMap(x -> x.getName(),x -> x.getCode(),(oldValue, newValue) -> newValue)); colors.stream().collect(Collectors.toMap(x -> x.getName(), x -> x.getCode(), (oldValue, newValue) -> newValue, TreeMap::new));
示例
//Java program for list convert in HashMap with the help of Java 8 Stream methods
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.stream.Collectors;
class Color{
private String name;
private String code;
public Color(String name, String code){
this.name = name;
this.code = code;
}
@Override
public String toString() {
return name + "=" + code;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
public class ARBRDD{
public static void main(String[] args){
// input list of `Color` objects
List<Color> colors = new ArrayList<>();
colors.add(new Color("RED COLOUR", "#FF0000"));
colors.add(new Color("BLUE COLOUR", "#0000FF"));
colors.add(new Color("GREEN COLOUR", "#008000"));
Map<String, String> map = colors.stream()
.collect(Collectors.toMap(Color::getName, Color::getCode));
System.out.println("List Value Is Here: " + colors);
System.out.println("Map Value Is Here : " + map);
}
}
輸出
List Value Is Here: [RED COLOUR=#FF0000, BLUE COLOUR=#0000FF, GREEN COLOUR=#008000]
Map Value Is Here : {GREEN COLOUR=#008000, BLUE COLOUR=#0000FF, RED COLOUR=#FF0000}
使用ASCII字元表方法
在這個可能的方法中,我們將應用ASCII字元表方法來執行將ArrayList轉換為一組HashMap的轉換。
示例
//Java program for list convert in HashMap with the help of ASCII characters table methods
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ARBRDD{
public static void main(String[] args){
List<String> chars = Arrays.asList("A", "R", "B", "U");
Map<String, Integer> asciiMap = new HashMap<>();
for (String s : chars){
if (asciiMap.put(s, s.hashCode()) != null){
throw new IllegalStateException("Duplicate key");
}
}
System.out.println(asciiMap);
}
}
輸出
{A=65, R=82, B=66, U=85}
結論
在Java環境中,我們當然可以將ArrayList轉換為HashMap。但是像陣列一樣,HashMap不遵循元素的順序。為了建立和構建一個保持順序的HashMap,還有一個名為LinkedHashMap的函式,它可以幫助程式設計師維護HashMap。在今天的文章中,我們學習了在Java環境中將特定的ArrayList轉換為HashMap集合的各種方法。
使用上述語法和演算法,我們構建了一些Java程式碼來高效地解釋問題陳述。
另請閱讀: Java面試問題及答案
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP