Arraylist元素名称已存在,请更新,否则请在java中创建新名称
我试图从arraylist值中获取字符串值 但在我的arraylist中,如果该值已经存在,只需更新计数即可。否则需要创建一个新的。这里的值正在更新,但是如果名称与arraylist元素名称不匹配,如何创建新的one元素?请告诉我,如何验证arraylist中已经存在元素(GlobalData.getCRole)。 在此代码中,arraylist名称为GlobalData.getrolecountArraylist元素名称已存在,请更新,否则请在java中创建新名称,java,android,arrays,arraylist,wrapper,Java,Android,Arrays,Arraylist,Wrapper,我试图从arraylist值中获取字符串值 但在我的arraylist中,如果该值已经存在,只需更新计数即可。否则需要创建一个新的。这里的值正在更新,但是如果名称与arraylist元素名称不匹配,如何创建新的one元素?请告诉我,如何验证arraylist中已经存在元素(GlobalData.getCRole)。 在此代码中,arraylist名称为GlobalData.getrolecount GlobalData.getCRole = item.getRole_name();
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);
}
GlobalData.getCRole=item.getRole_name();
如果(GlobalData.getrolecount.size()>0){
对于(int i=0;i
我会使用不同的数据结构。清单不是你想要的。您需要一个要计数的字符串映射(可能是HashMap),或者一个要角色的字符串映射。通过这种方式,您可以进行O(1)搜索以查看角色是否已经存在,而不是在列表中进行O(n)遍历,检查角色是否存在只需简单的检查get是否返回null。在@Gabeschen的答案中添加一个片段,可以帮助您:
//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
请告诉我您粘贴的代码中的列表在哪里??创建一个新的角色对象,当它不匹配时将其添加到arraylist。@ΦXocę웃Пepeúpa我认为GlobalData.getrolecoount
是数组列表。@K Neeraj Lal.,当然是的。但是当我必须创建一个新角色时,我需要一个条件来验证right@KrishnaVeni将else条件添加到equals check并添加到那里。