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