2017-06-02 4 views
-1

キーと値のペアが必要ですが、それを反復処理する必要がありますが、最後の反復から&を削除する必要があります。Javaマップの現在のエントリが最後であるかどうかを判断する方法

私のキーと値のMapオブジェクトは次のように定義されています。私のような私の反復を行う

private Map<String, String> additionalAttributes = new HashMap<String,String>(); 

for(Entry<String,String> i : additionalAttributes.entrySet()) { 
    attributes += i.getKey() + "=" +i.getValue() + "&"; 
} 

は、現在のエントリiが最後である場合、私は判断することができますどのような方法があります地図のエントリ?地図は、実行するたびにサイズと内容が変化するので、私は動的な解決策が必要です。

+2

ちょうどあなたが反復終わったら、末尾に「&」を削除。 –

+1

これは簡潔な質問がより良い答えを得る理由です: – Alfabravo

+0

質問は閉じているので、あなたは文字通りの質問は決して直接の答えを得ることはありません。あなたが本当に "最後のアイテム"に関する知識が必要であり、あなたが与えた例が欺瞞的であるならば、あなたはAPIを掘り下げる必要があります。 entrySet()コールは反復子を返します(これが反復処理の対象です)。 Iteratorには関数呼び出し "hasNext()"があり、それ以上の項目がある場合はtrueを返し、最後の項目の場合はfalseを返します。これは、あなたがこのケースで文字通りの答えを必要とするかどうかを判断する方法です。 :) –

答えて

3

Javaのストリームはあなたのために重い物を持ち上げるをやらせるためにはるかに簡単かもしれ:

String attributes = 
    additionalAttributes.entrySet() 
         .stream() 
         .map(e -> e.getKey() + "=" + e.getValue()) 
         .collect(Collectors.joining("&")); 
+2

これは、反復の最後の項目を決定するOPの要求には対処していません。 – lucasvw

+1

これは[XY問題](https://meta.stackexchange.com/a/66378/223467)です。エントリセットの最後の項目を決定する実装の詳細ではなく、実際の必要性に応じます。 – Mureinik

関連する問題