Java ArrayList删除没有集合的dupes
我在从ArrayList中删除重复项时遇到问题.这是为了大学的任务.这是我已经拥有的代码:
public int numberOfDiffWords() { ArrayList<String> list = new ArrayList<>(); for(int i=0; i<words.size()-1; i++) { for(int j=i+1; j<words.size(); j++) { if(words.get(i).equals(words.get(j))) { // do nothing } else { list.add(words.get(i)); } } } return list.size(); } 问题出在numberOfDiffWords()方法中.填充列表方法工作正常,因为我的讲师给了我一个样本字符串(包含4465个单词)来分析 – 打印words.size()给出了正确的结果. 我想返回新ArrayList的大小,删除所有重复项. words是一个ArrayList类属性. 更新:我应该提到我只允许在分配的这一部分使用基于动态索引的存储,这意味着没有基于散列的存储. 解决方法
由于这是一项任务,我不打算编写代码.但是,我建议采用不同的方法.
>按照您的方式迭代数组 我推荐的方法应该会产生更简单易懂的代码.请注意,所有这些都是O(n2)解决方案(就像你的那样,如果你做得对的话). 如果分配允许修改数组,则另一种方法是对数组进行排序.然后相等的元素将相邻,并且很容易计算有多少是唯一的.这是一种O(n log(n))方法. (您也可以只创建一个数组副本,这不会改变渐近的复杂性,但会降低解决方案的速度.) 如果不使用某种散列函数(HashSet或HashMap),你就不会比这更好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |