在Java中,我有一个带有这些值的arraylist(很多行,这只是一个提取)
20/03/2013 23:31:46 6870 6810 6800 6720 6860 6670 6700 6650 6750 6830 34864 34272 20/03/2013 23:31:46 6910 6780 6800 6720 6860 6680 6620 6690 6760 6790 35072 34496
前两个值是包含数据并存储在单个元素中的字符串.
我想要做的是比较字符串数据元素和删除例如第二个和引用该行的所有元素.
现在,我使用了一个for循环,每13个元素比较字符串(为了只比较数据字符串)
我的问题:我能实施其他更好的解决方案吗?
这是我的代码:
20/03/2013 23:31:46 6870 6810 6800 6720 6860 6670 6700 6650 6750 6830 34864 34272
20/03/2013 23:31:46 6910 6780 6800 6720 6860 6680 6620 6690 6760 6790 35072 34496
Run Code Online (Sandbox Code Playgroud)
Anu*_*lla 59
.contains()在添加新元素之前,尝试使用ArrayList上的方法检查重复项.
它看起来像这样
if(!list.contains(data))
list.add(data);
Run Code Online (Sandbox Code Playgroud)
这应该可以防止列表中的重复,以及不像人们似乎寻找的那样搞乱元素的顺序.
Dmi*_*kin 39
创建一个独特值的Arraylist
你可以使用Set.toArray()方法.
不包含重复元素的集合.更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和至多一个null元素.正如其名称所暗示的,该界面模拟数学集抽象.
http://docs.oracle.com/javase/6/docs/api/java/util/Set.html
Amo*_*shi 15
HashSet hs = new HashSet();
hs.addAll(arrayList);
arrayList.clear();
arrayList.addAll(hs);
Run Code Online (Sandbox Code Playgroud)
MC *_*ror 13
聚会很晚了,但这是我的两分钱:
LinkedHashSet我假设您需要的是一个集合:
LinkedHashSet做这个。过度使用的优点ArrayList是,LinkedHashSet具有的复杂性O(1)的contains操作,而不是ArrayList,其具有O(N) 。
当然,您需要正确实现您的对象equals和hashCode方法。
小智 8
如果您想创建一个包含现有列表中唯一值的列表,您可以使用
List myUniqueList = myList.stream().distinct().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
//Saving each element of the input file in an arraylist
ArrayList<String> list = new ArrayList<String>();
while (s.hasNext()){
list.add(s.next());
}
//That's all you need
list = (ArrayList) list.stream().distinct().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153370 次 |
| 最近记录: |