2016-07-01 3 views
-3

arraylistの値から文字列値を取得しようとしています。Arraylistの要素名はすでに存在します。そうでない場合は更新します。新しい要素をJavaで作成します。

しかし、値がすでに存在する場合は、私のarraylistでカウントを更新するだけです。それ以外の場合は新しいものを作成する必要があります。値は更新されていますが、名前がarraylist要素の名前と一致しなかった場合、新しい要素を作成するにはどうすればよいですか?私に教えてください、どのように要素(GlobalData.getCRole)がarraylistに既に存在するかを確認することができます。このコードで は、ArrayListの名前は、私は別のデータ構造を使用したいGlobalData.getrolecount

GlobalData.getCRole = item.getRole_name(); 
       if (GlobalData.getrolecount.size() > 0) { 

        for (int i = 0; i < GlobalData.getrolecount.size(); i++) { 
         Role getrc = GlobalData.getrolecount.get(i); 
         Role getrcverify = new Role(); 
         getrcverify.setRole_name(GlobalData.getCRole); 

         if (getrc.getRole_name().equalsIgnoreCase(GlobalData.getCRole)) { 
          String inccount = GlobalData.getrolecount.get(i).getCount(); 
          int getcount = Integer.parseInt(inccount) + 1; 
          getrc.setCount(Integer.toString(getcount)); 
         } 
        } 
       } else { 
        Role getrc = new Role(); 
        getrc.setRole_name(GlobalData.getCRole); 
        getrc.setCount("1"); 
        GlobalData.getrolecount.add(getrc); 
       } 
+0

貼り付けたコードのリストはどこですか? ?? –

+0

新しいRoleオブジェクトを作成し、一致しない場合はarraylistに追加します。 –

+0

@ΦXocę笑Пepeúpa私は 'GlobalData.getrolecount'がarraylistだと思います。 –

答えて

0

です。リストはあなたが望むものではありません。文字列のMap(おそらくHashMap)をCountに、または文字列をRolesに置きたいとします。そうすれば、リストのO(n)歩行ではなく、ロールがすでに存在するかどうかを調べるためにO(1)の検索を行い、そのロールが存在するかどうかを調べるだけでgetがnullを返すかどうかを調べることができます。 GabeSechanの答え@に追加

0

は、ここであなたを助けるでしょうスニペットです:

//let's say you store your data in a Map called myHashMap 

String keyToMatch = "your_key_here";  // replace this line with whatever code you use to get your key 
if(myHashMap.containsKey(keyToMatch))  // Check if your map already contains the key 
{ 
    int val = myHashMap.get(keyToMatch); 
    myHashMap.put(keyToMatch, val++);  // Can be shrunken to a single line 
} 
else 
{ 
    myHashMap.put(keyToMatch, 1);   // If it doesn't exist in the map, add it (with count 1) 
} 

Map<>は非常に強力なツールであるため、このコードは、はるかに収縮することができます。しかし、私はあなたの実装に似た方法でそれを書いたので、あなたはそれをよりよく理解することができます。

さらに詳しい説明が必要な場合や、初期化しようとしている場合はお知らせくださいmyHashMap

関連する問題