我知道我应该学习如何在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版本,这是我的最终目标。
所以,就是这样;对你们来说,另一个随机的“挑战”。
答案 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]
}