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面試問題及答案

更新於:2024年6月17日

3K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告