我试图从arraylist值中获取字符串值。
但是在我的arraylist中,如果值已经存在,只需更新计数即可。否则需要创建一个新的。这里的值正在更新,但是如果名称与arraylist元素名称不匹配,如何创建新的元素?请告诉我,如何验证arraylist中已存在的元素(GlobalData.getCRole)。 在此代码中,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)
我使用不同的数据结构。列表不是你想要的。您希望字符串的Map(可能是HashMap)为Count,或者字符串为Roles。这样你就可以进行O(1)搜索,看看角色是否已经存在,而不是列表的O(n)遍历,并检查角色是否存在是一个简单的检查,看看get是否返回null。
答案 1 :(得分:0)
添加到@ GabeSechan的答案,这里有一个可以帮助你的片段:
//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
,请与我们联系。