如何为Java HashMaps模拟Python dict“items()”方法?

时间:2013-05-02 22:26:21

标签: java python hashmap

我知道我应该学习如何在Java中高效编程并且不再认为它是Python;但问题是这种事情在Java中变成了一场小噩梦。

我在Python中有以下函数,它以字符串作为参数:

def decodeL(input):
L = []
for i in range(len(input)):
    for j in x.items(): // Where "x" is the Dictionary outside the function.
        if input[i].lower() in j[0]:
            L.append(j[1])
return L

忽略函数本身的功能,使它工作得很好的是“items()”方法,它返回列表中的元组。正如您所看到的,我使用这些元组来访问自己的索引。

在Java中,这是一个非常令人不快的问题。

static ArrayList items(HashMap hashTarget) {
    ArrayList L = new ArrayList();
    Set<String> keys = hashTarget.keySet();
    Collection<Object> values = hashTarget.values();

    for (int i = 0; i < hashTarget.size(); i++) {
        L.add(keys);
        L.add(values);
    }

    return L;
}

正如你所看到的,我试图实现我自己的“items()”方法,但我失败了;因为Java本身没有元组,所以这真的搞砸了我的大脑:)。我不能像Python那样漂亮地插入键和值;因此,我无法创建那个“decodeL”函数的Java版本,这是我的最终目标。

所以,就是这样;对你们来说,另一个随机的“挑战”。

1 个答案:

答案 0 :(得分:4)

Java已经以Map.entrySet()方法的方式为您实现了这一点。

for(Map.Entry<K, V> j : x.entrySet()) {
    V val = j.getValue(); // j[1]
    K key = j.getKey();   // j[0]
}