LinkedHashMap 是Java 中的一個預定義類,類似於HashMap,包含key 及其各自的值,不像HashMap,在LinkedHashMap 中保留了插入順序。
我們需要將ArrayList轉換為LinkedHashMap,LinkedHashMap的Key值就是ArrayList的索引,本質上LinkedHashMap在迭代和存儲數據方麵也和ArrayList一樣。
例:
Input ArrayList: { 5, 6, 7, 8, 4 } Output LinkedHashMap: Index | Value 1 | 5 2 | 6 3 | 7 4 | 8 5 | 4
我們可以通過 2 種方式將 ArrayList 轉換為 LinkedHashMap:
- 使用 for-each 循環遍曆整個 ArrayList 並將每個元素推送到 LinkedHashMap。
- 在 java 8 版本中使用流。
方法:使用 for-each 循環
- 在 ArrayList 中接受輸入。
- 使用 For/While 循環在 LinkedHashMap 中推送值(假設第一個索引為 1,LinkedHashMap 的鍵將是 ArrayList 的索引)
偽代碼:
while (i < l1.size()) { l.put(i + 1, l1.get(i)); i++; } Here, "l1" is ArrayList and "l" is LinkedHashMap.
Java
// Java program to convert ArrayList
// to LinkedHashMap
import java.util.*;
import java.io.*;
class GFG {
public static void main(String[] args)
{
LinkedHashMap<Integer, Integer> l = new LinkedHashMap<>();
ArrayList<Integer> l1 = new ArrayList<>();
l1.add(5);
l1.add(6);
l1.add(7);
l1.add(8);
l1.add(4);
int i = 0;
// Adding one by one the elements
// of ArrayList to LinkedHashMap
while (i < l1.size())
{
l.put(i + 1, l1.get(i));
i++;
}
System.out.println("Key | Value");
// .entrySet() method gives us the list of all
// mappings reference of the map
for (Map.Entry<Integer, Integer> it:l.entrySet()) {
System.out.println(" " + it.getKey() + " | "
+ it.getValue());
}
}
}
輸出
Key | Value 1 | 5 2 | 6 3 | 7 4 | 8 5 | 4
時間複雜度:在)
方法2:使用流
如果您使用的是 Java 8 或更高版本,還有另一種方法,您可以使用流將 List 轉換為 LinkedHashMap 對象。Stream API 用於處理對象的集合。流是支持各種方法的對象序列那可以流水線化以產生所需的結果。
例:
Java
// Java program to convert ArrayList to LinkedHashMap
import java.util.*;
import java.io.*;
import java.util.stream.Collectors;
class integer {
private Integer id;
private String name;
public integer(Integer id, String name)
{
this.id = id;
this.name = name;
}
public Integer getId() { return this.id; }
// the .toString method of Object class
// will be called by default when the object
// of integer class will be made
public String toString()
{
return "[" + this.id + "=>" + this.name + "]";
}
}
class GFG {
public static void main(String[] args)
{
List<integer> List = new ArrayList<integer>();
List.add(new integer(1, "will"));
List.add(new integer(2, "mike"));
List.add(new integer(3, "luke"));
List.add(new integer(4, "dustin"));
System.out.println("ArrayList contains:" + List);
// stream Api is used here to convert the
// List to LinkedHashMap
Map<Integer, integer> HashMap = List.stream().collect(Collectors.toMap(
integer::getId, integer -> integer));
System.out.println("Map contains:" + HashMap);
}
}
輸出
ArrayList contains:[[1=>will], [2=>mike], [3=>luke], [4=>dustin]] Map contains:{1=[1=>will], 2=[2=>mike], 3=[3=>luke], 4=[4=>dustin]}
相關用法
- Java LinkedHashMap轉List用法及代碼示例
- Java LinkedHashMap轉Two Arrays用法及代碼示例
- Java LinkedHashMap clear()用法及代碼示例
- Java LinkedHashMap removeEldestEntry()用法及代碼示例
注:本文由純淨天空篩選整理自kushwahp1234大神的英文原創作品 Convert ArrayList to LinkedHashMap in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。