Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arraylist元素名称已存在,请更新,否则请在java中创建新名称_Java_Android_Arrays_Arraylist_Wrapper - Fatal编程技术网

Arraylist元素名称已存在,请更新,否则请在java中创建新名称

Arraylist元素名称已存在,请更新,否则请在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();

我试图从arraylist值中获取字符串值

但在我的arraylist中,如果该值已经存在,只需更新计数即可。否则需要创建一个新的。这里的值正在更新,但是如果名称与arraylist元素名称不匹配,如何创建新的one元素?请告诉我,如何验证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);
                }
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并添加到那里。