3

我知道我应该学习如何用 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 版本,这是我的最终目标。

就是这样了; 给你们的另一个随机“挑战”。

4

1 回答 1

4

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

for(Map.Entry<K, V> j : x.entrySet()) {
    V val = j.getValue(); // j[1]
    K key = j.getKey();   // j[0]
}
于 2013-05-02T22:34:36.210 回答