当前位置: 首页 > 知识库问答 >
问题:

在arrayList中删除(index)不删除该索引处的对象

孟乐逸
2023-03-14

当执行进入非Reps.remove行时,删除不是删除指定索引处的对象。为什么?

//given array
Character[] arr = new Character[]{'a','a','a','b','c','c','c','d','e','e','e','f'};


Map<Character,Integer> map = new HashMap();
List<Character> nonReps = new ArrayList<>();

for (int i = 0; i < arr.length; i++) {
         if(map.containsKey(arr[i])){
                Integer indexInNonreps = map.get(arr[i]);
                Character characterInNonreps = nonReps.get(indexInNonreps);
                if(arr[i].equals(characterInNonreps))
                    nonReps.remove(indexInNonreps);
         }else{
                nonReps.add(arr[i]);
                map.put(arr[i],nonReps.size()-1);
          }
}

System.out.println(nonReps);

此解决方案打印:[a, b, c, d, e, f]当它应该是b, d, f时

共有1个答案

慕翰学
2023-03-14

您可以使用Set检查字符是否唯一,如果不是,则从noReps中删除

    public static void main(String[] args) {
        Character[] arr = new Character[]{'a','a','a','b','c','c','c','d','e','e','e','f'};

        Set<Character> seen = new HashSet<>();
        List<Character> nonReps = new ArrayList<>();

        for (int i = 0; i < arr.length; i++) {
            if(seen.contains(arr[i])){
                nonReps.remove(arr[i]);
            }else{
                nonReps.add(arr[i]);
                seen.add(arr[i]);
            }
        }
        System.out.println(nonReps);
    }

输出

[b, d, f]

 类似资料:
  • 问题内容: 我有成员类的简单ArrayLists: 会员等级: 朋友的ArrayList包含所有用户朋友。我只希望从好友列表中删除组成员(如果存在): 但这对列表没有任何帮助… 查看日志语句,该朋友实际上确实出现在列表中。 为什么不起作用? 问题答案: 如何确定2个成员相等?我猜它们是否具有相同的ID,您认为它们相等,但是Java希望它们成为内存中的完全相同的引用,而事实并非如此。要更正此问题,您

  • 如何在不删除索引映射的情况下从elasticsearch数据库中删除数据? 我是Tire gem,使用删除命令删除我所有的映射并再次运行创建命令。我想避免创建命令一次又一次地运行。 请帮我解决这个问题。

  • 问题内容: 在文档(http://dev.mysql.com/doc/refman/6.0/en/drop- table.html )中未明确提及。我问是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,其中开发人员在删除表之前删除了所有索引,这似乎是不必要的。 问题答案: 是的,它确实。 但是,如果您具有诸如RESTRICT之类的外键约束来确保与其他表的参照完整性,则需要在删除或截断表之前

  • 命令用于删除指定的索引。 如果索引创建时未指定索引名称,则索引名称为。 语法 或者 - 删除索引的规则 如果索引不存在,它将返回错误,除非您使用,否则不返回任何操作。 在创建索引期间,您必须使用索引名称指定名称,否则将当前键空间中的索引删除。 示例: 下面举个例子来演示如何删除某列上的索引。 在这里,我们将创建的索引放在表“”中的“”列中。键空间的名称是“”。 如下语句 - 从“”列中删除索引。

  • 问题内容: 我的许多日志都以logstash-Year- Week格式编制索引。那就是如果我想删除超过几周的索引,如何在elasticsearch中实现。有没有简单,无缝的方法可以做到这一点? 问题答案: 策展人将是这里的理想之选。您可以在这里找到链接-https: //github.com/elastic/curator 如下所示的命令应该可以正常工作- 您可以将其保留在CRON中,以偶尔删除索

  • 问题内容: 我有一个包含两个“ 0”(str)的字符串,我只想删除索引4处的“ 0”(str) 我尝试调用.replace,但是显然删除了所有的“ 0”,并且我找不到能为我删除第4位字符的函数。 有人对我有提示吗? 问题答案: 使用切片,重建字符串减去要删除的索引: