【问题标题】:trouble with array duplicate filter android/java数组重复过滤器android / java的问题
【发布时间】:2011-03-31 18:49:42
【问题描述】:

我有一个字符串数组,它可能包含一些重复的值,我正在尝试编写一个过滤器来消除任何重复。

我在下面粘贴的代码适用于数组中除第一个元素之外的所有元素,我不知道为什么。

感谢您提供的任何帮助。

for(int i=0; i<forparts.length; i++){
        elem = forparts[i];
        for (int n=i+1; n<forparts.length; n++){
            elem2 = forparts[n];
            if (elem2.equalsIgnoreCase(elem)){
                forparts[n] = "";
            }
        }
    }

【问题讨论】:

  • 对数组中的第一个元素不起作用是什么意思?你得到了什么,你的预期结果是什么?附带说明:yock 的回答是删除字符串列表中重复项的有效方法。
  • 我的意思是,如果第一个元素在数组中的某处重复,则不会按预期删除第二个实例。我对集合不熟悉。生病试一试,看看我是否能设法让它这样工作。谢谢
  • 我已经检查了代码。它对我有用。

标签: java android arrays algorithm


【解决方案1】:

跳出框框思考,必须使用数组吗?您需要的行为可从 Java Collections 库中的 Set 接口获得。

Set<MyType> set = new LinkedHashSet<MyType>();
MyType obj = new MyType();
boolean bAdded;
bAdded = set.add(obj); // bAdded == true, set.size() == 1
bAdded = set.add(obj); //bAdded == false; set.size() == 1

通过这种方式,您永远不需要从您的收藏中过滤掉骗子,因为它们从一开始就不会被添加。

【讨论】:

  • 我作弊并通过在数组的开头添加一个空元素来使其工作。我只是不明白为什么我需要。不过感谢您的帮助。以后我会尝试实现set接口。
猜你喜欢
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 2022-01-26
  • 2011-05-28
  • 2017-07-19
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
相关资源
最近更新 更多