例如:
public static LinkedList<String, Double> ll = new LinkedList<String, Double>;
例如:
public static LinkedList<String, Double> ll = new LinkedList<String, Double>;
根据您的问题,我认为(不是 100% 确定)您正在寻找
java.util.LinkedHashMap<K, V>
在你的情况下,它会是LinkedHashMap<String, Double>
来自java文档:
Map 接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashMap 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。
如果您确实想通过以下方式获取元素list.get(5)
,则可以:
LinkedList<Entry<String, Double>>
所以你可以通过 获得Entry 元素Entry entry = list.get(5)
,然后entry.getKey()
给你STRing,entry.getValue()
给你Double。
阅读您的所有评论,我建议您执行以下操作:
public class StringAndDouble {
private String str;
private double dbl;
// add constructor
// add getters, setters and other methods as needed.
// override equals() and hashCode()
}
现在您可以使用:
List<StringAndDouble> list = new LinkedList<>(); // or
List<StringAndDouble> list = new ArrayList<>(); // better in most cases
现在您可以通过索引访问您的对象。
这个答案创建了一个新类,以满足您的需求。该类有两个字段,一个String
,一个double
。这不会使类成为二维的。我认为你有一个误解。当有n
维度时,您需要n
索引来访问元素。您说的是按索引访问,所以我假设您正在寻找一个包含多个字段的对象的一维列表。
你的意思是这样吗?
HashMap<String, Double> hm = new HashMap<String, Double>();
由于 OP 在对@Kent 的评论中说他希望能够按索引获取项目......
请注意, a LinkedList
(and LinkedHashMap
) 在这方面效率低下。他可能更喜欢ArrayList
. 所以我建议他的“2D”实现是
ArrayList<Map.Entry<String, Double>>
这将有效地支持按索引获取。
至于 normal get(String key)
,您必须对所有条目进行线性搜索,这将是低效的。
因此,您有一个决定:哪种访问方式(通过键或通过索引)更重要?
您实际上可以在彼此之间使用链接列表...例如:
public LinkedList<LinkedList<Integer>> twoDimLinkedList = new LinkedList<LinkedList<Integer>>();
然后:
////////////////
int value = twoDimLinkedList.get(3).get(4);
/////////////////
或(如果您打算将其用于迭代目的):
/////////////////
for (int i = 0; i < twoDimLinkedList.size(); i++) {
LinkedList<Integer> twoDimLinkedListRow = new LinkedList<Integer>();
for (int m = 0; m < twoDimLinkedList.get(i).size(); m++) {
twoDimLinkedListRow.add(value);
}
twoDimLinkedList.add(twoDimLinkedListRow);
}
////////////////