web-dev-qa-db-ja.com

Javaハッシュマップのエントリset()を繰り返し処理できますか?

速度テンプレートでこのようなことができますか?

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key()</name>
    <value>$mapEntry.value()</value>
#end

次のような空白タグを出力します。

<name></name> 

そして

<value></value> 

私は何を間違えていますか?

41
Ayrad

あなたの間違いはkeyおよびvalueをプロパティとしてではなくメソッド(末尾の "()"括弧付き)として参照していることです。これを試して:

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key</name>
    <value>$mapEntry.value</value>
#end

つまり、mapEntry.keyなどのプロパティ、またはmapEntry.getKey()などのメソッドを使用します。

101
Yoni

HashMapを高速でループする方法を探していますが、これも機能します。

#set ($map = $myobject.getMap())
#foreach( $key in $map.keySet())
      <name>$key</name>
      <value>$resume.get($key)</value>
#end

JavaでHashMapをループする方法と同じです。

5
Allan Ruin

明確にするために(コメントできません)、一般的にJava getメソッドを使用するか、対応する名前で小文字と_()_なしで置き換えることができます。

$mapEntry.getKey()または_map.key_です。

1
Vincent Gerris

ここで価値

itemsValue={data1=1,data2=2,data3=3}

したがって、値のグループを反復処理する必要があります。

foreach ($key in ${itemsValue.keySet()})
   if($itemsValue.get($key)==1)
        Condition
   end
end

上記のコードでは、値が-"data1、data2 etc ..."のようになることを確認できますが、get()を使用した後、インスタンス値を取得できます。

0
user7490061