18

Ctrl我们可以通过按++轻松地遍历Alt集合T

然后我想创建这样的模板来遍历地图:我将这些行写到模板文本框中:

for (Map.Entry<$ELEMENT_TYPE$> $VAR$ : $SELECTION$.entrySet()) {
  $END$
}

现在它正在生成这些代码:

 HashMap<String,Object> map=new HashMap<String,Object>();
    for (Map.Entry<Object> objectEntry : map.entrySet()) {

    }

Map.Entry<Object>应该是Map.Entry<String,Object>。我找不到正确引入变量的方法。我怎样才能做到这一点?

4

3 回答 3

46

如果您只键入iter然后,会更容易Tab

你会得到一个下拉菜单,你可以在那里选择map.entrySet(),它会给你:

for (Map.Entry<String, Object> stringObjectEntry : map.entrySet()) {

}
于 2012-10-01T08:52:54.913 回答
1

要查看可用的实时模板列表:Ctrl + J然后Tab.

从那里您将获得实时模板列表,iter(对于每个循环)将在列表中。

于 2015-07-29T09:14:01.570 回答
0

我写了这个,它在 1 步中起作用。我也喜欢里面已经有了keyand value,但是可以省略:

for (Map.Entry<$KEY_TYPE$, $VALUE_TYPE$> $PAIR$ : $ITERABLE_TYPE$.entrySet()) {
    $KEY_TYPE$ key = $PAIR$.getKey();
    $VALUE_TYPE$ value = $PAIR$.getValue();
    $END$
}

变量:

  • KEY_TYPE:guessElementType(iterableVariable())
  • 值类型:regularExpression(typeOfVariable(ITERABLE_TYPE),"^.*,(.*)>$", "$1")
  • 一对:suggestVariableName()
  • ITERABLE_TYPE:variableOfType("java.util.Map")

大量的变量和函数使Live Templates 成为一个强大的工具。在 VALUE_TYPE 中,我使用正则表达式来ValueType输出Map<KeyType, ValueType>. 我尝试了很多“更清洁”的方法,但都没有奏效。

于 2020-01-20T12:46:38.373 回答