0

次のタスクを実行する必要があります。

  • アイテムのリストがあります。
  • gkejgueieriug各アイテムには、「 」のような文字列を含むリストもあります
  • 次に、リストをスローして、各アイテムのリスト内のアイテムの数が現在の要素にもあることを確認する必要があります

ここに小さな疑似コードがあります:

OneItem;
List AllItems;
for Item in AllItems:
    int count = number strings in Item.Values which are also in OneItem.Values

データが非常に大きいため、効率的な実装を行うために助けが必要です。

これを行う方法?ハッシュマップを使用する必要がありますか? オーバーラップを数える方法は?

4

4 に答える 4

0

比較が一方向のみの場合 (つまり、あるリスト内の文字列のみをカウントし、別のリストにも含まれているが、その逆はカウントしない) の場合、おそらく両方のリストを Set に入れるのが最善の方法です。

HashSet firstSet = ...
HashSet secondSet = ...

for(each value in firstSet)
{
    if(secondSet.contains(value)
    {
        // Do what you want with the value.
        // Sugestion: Add value to a separate set
        // so you can track duplicates etc
    }
}
于 2013-05-24T09:03:44.177 に答える
0

このコードを使用して、文字列値と OneItem.Values の一致数を使用してArrayListofを作成します...Map

ArrayList<Map<String,Integer>> matches=new ArrayList<>();
for (Item i : AllItems) {
      Map<String,Integer> map=new HashMap<>();
      for(String s:values){
        map.put(s,Collections.frequency(OneItem.Values, s));
      }
      matches.add(map); 
}
于 2013-05-24T09:10:37.143 に答える