您的问题没有提供有关您要比较的所涉及类型的详细信息。所以我假设你有一个List<Item>
. 每个项目都有一个String
和一个自己的List<Item>
所以首先我会在你的HashSet
-List中String
创建一个。迭代并将每个字符串添加到. 然后在第二步中再次迭代并在s 中迭代并在此处检查每个 String 是否在之前创建的 HashSet 中。Items
AllItems
AllList
Item
HashSet
AllList
List
Item
如果您必须多次检查这一点,您可以将 HashSet 保留为缓存,在AllList
更改时刷新它。
// Step 1: Create Set of Strings
Set<String> allStrings = new HashSet<String>();
for (Item item : allList) {
allStrings.add(item.getString());
}
// Step 2: Calculate occurrences
for (Item item : allList) {
for (Item internalItem : item.getItems()) {
if (allStrings.contains(internalItem.getString()) {
// Count one up for this String
// This might be done by replacing the HashSet by a HashMap and use its values for counting
}
}
}