关键词:
【中文标题】使用循环从字符数组列表中删除重复项? [复制]【英文标题】:Removing duplicates from an array list of characters using a loop? [duplicate] 【发布时间】:2015-12-07 07:06:52 【问题描述】:public static ArrayList<Character> removeDuplicates (ArrayList<Character> data)
ArrayList<Character> newList = new ArrayList<Character>();
for (int i = 0; i < data.size() - 1; i++)
if (!newList.contains(data.get(i)))
newList.add(0,(data.get(i)));
return newList;
到目前为止,这是我的代码。我不明白这是怎么回事
【问题讨论】:
这是一个非常低效的实现,但它应该可以工作 我认为你总是将数字添加到索引 0,所以它只会覆盖 0。只需使用 add(data.get(i)) 将其添加到列表的末尾 @jackie 错了,他使用的是add
而不是set
@Dici 感谢您的更正。我应该进一步阅读文档。 “在此列表中的指定位置插入指定元素。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将其索引加一)。”
问题是,“不工作”是什么意思?
【参考方案1】:
您可以使用Set
。 Set
是 Collection
,不允许重复对象。
我不确定您的 List
是什么对象类型,但假设您使用的是 String
:
//replace all instances of 'String' with whatever Object type you are using
Set<String> mySet = new HashSet<>();
for(String s : data)
mySet.add(s);
那么,如果你想将数据发送到List
,请执行以下操作:
ArrayList newList = new ArrayList(mySet);
【讨论】:
使用集合很好,但您不需要手动填充它。你可以只做new ArrayList<>(new HashSet<>(data))
,但我想这太容易解决问题了【参考方案2】:
您的实施存在 2 个问题。
-
您没有计算数组中的所有项。您应该使用
i <= data.size() - 1
或i < data.size()
。现在你错过了最后一项。
您没有将项目添加到列表的末尾。相反,您会反复覆盖第零个(第一个)值。编辑:对不起,那是不正确的。您在列表的开头插入,这将有效,但对于最常用的列表(例如 ArrayList)效率低。
这是固定版本。问题区域用/* */
注释掉。
List<Object> newList = new ArrayList<Object>();
for (int i = 0; i < data.size() /* - 1 */ ; i++)
if (!newList.contains(data.get(i)))
newList.add( /* 0, */ (data.get(i)));
return newList;
编辑:在列表中使用 contains(...)
很慢。您可以使用Set
优化和简化此操作。集合是具有唯一值的集合。两次添加相同的值没有效果。我们可以更进一步,使用LinkedHashSet
作为实现类,它将保持与原始列表中相同的顺序。
return new ArrayList<Object>(new LinkedHashSet<Object>(data));
【讨论】:
正如@Dici 指出的那样,#2 是不正确的。请参阅 javadocs:public void add(int index, E element) 在此列表中的指定位置插入指定元素。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将它们的索引加一)。 @jackie 谢谢,你是对的。我更新了我的答案。 实际上真正好的解决方案是使用Set
,但我 +1 答案,因为它修复了 OP 的代码
@Dici 是的,你完全正确。我添加了一个使用LinkedHashSet
的改进解决方案,它也将保持原始列表排序。如何从我的列表中删除重复项? [复制]
...icate]【发布时间】:2021-06-3014:16:05【问题描述】:我正在使用SwiftUI在视图中生成这个动态列表(显示生成列表的一部分):薰衣草柠檬石灰石灰芒果如何从列表中删除重复项(例如LIME)?这是我生成列表视图的代码:structFlavorG... 查看详情
如何从 Python 列表中删除重复项并保持顺序? [复制]
...te]【发布时间】:2010-10-0313:18:03【问题描述】:给定一个字符串列表,我想按字母顺序对其进行排序并删除重复项。我知道我可以做到:fromsetsimportSet[...]myHash=Set(myList)但我不知道如何按字母顺序从哈希 查看详情
如何通过 Oracle 中的正则表达式从逗号分隔列表中删除重复项,但我不想要重复值? [复制]
...te]【发布时间】:2018-08-0703:08:33【问题描述】:我有这个字符串ABCD1234,XYZ,ABCD1234,ABCD123 查看详情
使用 jquery 从数组列表中添加和删除数组项
】使用jquery从数组列表中添加和删除数组项【英文标题】:Addandremovearrayitemsfromarraylistusingjquery【发布时间】:2020-05-0506:16:47【问题描述】:我想建立一个可以添加和删除用户的功能以逗号分隔的字符串存储在输入字段中,在html... 查看详情
从数组中删除重复项时出现超出范围异常
...:我创建了一个1-49之间的36个随机数组成的数组。我在for循环中嵌套了一个do-while循环,该循环将数字插入数组以删除任何重复的数字。运行代码进行测试时出现异常"System.IndexOutOfRangeExcept 查看详情
如何在不使用内置函数的情况下从字符串数组中排序和删除重复项?
】如何在不使用内置函数的情况下从字符串数组中排序和删除重复项?【英文标题】:HowtosortandremoveduplicatesfromstringArraywithoutusingtheinbuiltfunction?【发布时间】:2021-08-2914:16:12【问题描述】:我想删除重复的字符串并对C#中的字符... 查看详情
jQuery - 从字符串数组中删除重复项[重复]
】jQuery-从字符串数组中删除重复项[重复]【英文标题】:jQuery-removeduplicatesfromanarrayofstrings[duplicate]【发布时间】:2012-09-1502:55:46【问题描述】:可能重复:EasiestwaytofindduplicatevaluesinaJavaScriptarrayjQuery.uniqueonanarrayofstrings我正在尝试... 查看详情
从数组中删除重复的对象
...示:如果我们想从这个数组中删除任何重复项,我们可以使用Array.prototype.filter()和String.prototype.indexOf()方法来检查任何给定项是否是重复项。这种方法不适用于对象的原因是,任何两个具有相同属性和值的对象实际上并不被认为... 查看详情
如何通过 Oracle regexp_replace 从空格分隔列表中删除重复项? [复制]
】如何通过Oracleregexp_replace从空格分隔列表中删除重复项?[复制]【英文标题】:HowtoremoveduplicatesfromspaceseparatedlistbyOracleregexp_replace?[duplicate]【发布时间】:2017-03-0815:18:48【问题描述】:我有一个名为“ABAACD”的列表。我的预期结... 查看详情
使用 Guava 从列表中删除重复项
】使用Guava从列表中删除重复项【英文标题】:RemoveduplicatesfromListusingGuava【发布时间】:2012-08-2720:23:51【问题描述】:我们如何在Guavaapi的帮助下从List中删除重复项?目前我正在关注这个:privateList<T>removeDuplicate(List<T>li... 查看详情
如何使用 LINQ 从列表中获取重复项? [复制]
】如何使用LINQ从列表中获取重复项?[复制]【英文标题】:HowtogetduplicateitemsfromalistusingLINQ?[duplicate]【发布时间】:2010-09-2809:38:57【问题描述】:我有一个List<string>喜欢:List<String>list=newList<String>"6","1","2","4","6"... 查看详情
从逗号分隔的字符串中删除重复项
...tedString【发布时间】:2012-07-1016:06:58【问题描述】:如何使用jquery/javascript从逗号分隔的整数字符串中删除重复项?我的字符串是:1,2,2,4,2,4,3,2,3,1,5,5,5,1,1,2【问题讨论】:复制什么?请举个例子。我相信这可能会有所帮助:***.co... 查看详情
在 Python 中,从列表中删除重复项以使所有元素都是唯一的*同时保留顺序*的最快算法是啥? [复制]
】在Python中,从列表中删除重复项以使所有元素都是唯一的*同时保留顺序*的最快算法是啥?[复制]【英文标题】:InPython,whatisthefastestalgorithmforremovingduplicatesfromalistsothatallelementsareunique*whilepreservingorder*?[duplicate]在Python中,从列表... 查看详情
在for循环中使用拼接从数组中删除项目[重复]
】在for循环中使用拼接从数组中删除项目[重复]【英文标题】:Removeitemsfromarraywithspliceinforloop[duplicate]【发布时间】:2013-04-1912:00:06【问题描述】:我想实现一种jQuery实时搜索。但是在将输入发送到服务器之前,我想删除我的数... 查看详情
JavaScript 数组删除重复的单词或字符(如果只输入字符。不要从 1 个单词中删除所有重复项
】JavaScript数组删除重复的单词或字符(如果只输入字符。不要从1个单词中删除所有重复项【英文标题】:JavaScriptArraysdeleteduplicatewordsorcharacters(ifonlycharactersareentered.Nottodeletefrom1wordallduplicates【发布时间】:2018-11-1603:06:37【问题描... 查看详情
使用 JavaScript 从数组中删除所有重复项 [重复]
】使用JavaScript从数组中删除所有重复项[重复]【英文标题】:DropallduplicatesfromarrayusingJavaScript[duplicate]【发布时间】:2021-07-2002:47:21【问题描述】:我有一个带有如下输入的对象数组varjsonArray1=[id:\'1\',name:\'John\',id:\'2\',name:\'Smith\',... 查看详情
使用正则表达式从逗号分隔列表中删除重复项 [重复]
】使用正则表达式从逗号分隔列表中删除重复项[重复]【英文标题】:Removeduplicatesfromcommaseparatedlistwithregexp[duplicate]【发布时间】:2018-01-0708:26:59【问题描述】:我有contract,clause1,Subsection1.1,contract,clause1,Subsection1.2,paragraph(a),contract... 查看详情
循环没有捕获重复项并在 Android(Java) 中删除它们
...【发布时间】:2016-03-2123:46:36【问题描述】:我最近开始使用Android和Java进行编程,所以请多多包涵。我编写了一个循环,在将新姓名和电话号码添加到列表和隐藏数组之前,应该删除之前找到的所有重复项。使用当前方法,我... 查看详情