我有一个阵列列表
ArrayList<WorkPosition> info = new ArrayList<>();
在某些地方,我添加了一些对象。在结束这个数组列表有相同的对象多次...对象有一些int值和2个数组列表
97 [9, 10, 15] [1202, 1204, 2082]
97 [9, 10, 15] [1202, 1204, 2082]
97 [9, 10, 15] [1202, 1204, 2082]
42 [14, 16, 29] [404, 1081, 1201D]
42 [14, 16, 29] [404, 1081, 1201D]
42 [14, 16, 29] [404, 1081, 1201D]
57 [18, 30, 32] [2081, 435, 1032]
57 [18, 30, 32] [2081, 435, 1032]
57 [18, 30, 32] [2081, 435, 1032]
34 [19, 27, 28] [4501, 831, 201]
34 [19, 27, 28] [4501, 831, 201]
34 [19, 27, 28] [4501, 831, 201]
有没有办法删除额外的外观?我读过这篇文章,如何从ArrayList中删除重复的元素?但在我的例子中,我没有字符串
,而是工作位置
类型的对象。。
public class WorkPosition {
private int id;
ArrayList<Integer> machines = new ArrayList<>();
ArrayList<String> bottles= new ArrayList<>();
public WorkPosition(int id, ArrayList<Integer> machines, ArrayList<String> bottles) {
this.id = id;
this.machines = machines;
this.kaloupia = kaloupia;
}
//getters and setters...
}
只需将ArrayList
转换为Set
实现即可。Set集合不包含重复的元素。示例:
Set<WorkPosition> set = new HashSet<WorkPosition>(list);
列表、集合或映射中的所有对象(作为键或值)都应该有一个适当的相等定义。请参见Collection.contains、Map.contains键和Map.contains值。
阅读更多关于实现平等的实践。
您可以将列表
转换为集合
。
ArrayList<WorkPosition> info = new ArrayList<>();
Set<WorkPosition> distincts = new HashSet<>(info);
这要求WorkPosition
对象重写equals(obj)
方法和hashCode()
,如下所示:
public class WorkPosition {
// your code
@Override
public boolean equals(Object obj) {
// logic here
}
@Override
public int hashCode() {
// logic here
}
}
我读过这篇文章,如何从ArrayList
中删除重复的元素?但是在我的例子中,我没有String
s,而是WorkPosition
由于答案中的解决方案并不关心您是否使用String
s或其他行为良好的对象,因此您需要做的就是从解决方案的角度使WorkPosition
对象行为良好。
为此,您必须重写两个特定的方法-hashCode()
和equals(Object)
,并确保它们的行为符合规范。一旦完成此操作,消除重复的方法将适用于您的对象,就像它适用于String
s一样。
class WorkPosition {
@Override
public boolean equals(Object obj) {
// The implementation has to check that obj is WorkPosition,
// and then compare the content of its attributes and arrays
// to the corresponding elements of this object
...
}
@Override
public int hashCode() {
// The implementation needs to produce an int based on
// the values set in object's fields and arrays.
// The actual number does not matter too much, as long as
// the same number is produced for objects that are equal.
...
}
}
问题内容: 如何从ArrayList中删除重复的元素? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加Set回中ArrayList: 当然,这会破坏中的元素顺序。
问题内容: 我有一个,并且我想从中删除重复的字符串。我怎样才能做到这一点? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加回中: 当然,这破坏了中元素的顺序。
我有一个arraylist,它包含一对整数(例如int i,int j)。但它可能包含重复对(如(int i,int j)和(int j,int i))。现在如何在O(n)时间复杂度中去除重复。
这段代码运行良好,但我想知道它的性能,我指的是它的总体时间复杂度?
要从复杂对象中删除某些字段。 我想删除'阴谋'
问题内容: 我有一个字符串数组列表,并在其中添加了一些重复值。我只想删除那个重复的值,那么如何删除它。 在这个例子中我有一个主意。 但是有没有足够的方法来删除该重复表格列表。没有使用For循环?我可以通过使用HashSet或其他方式来做到这一点,但只能使用数组列表。想对此提出您的建议。谢谢您的提前答复。 问题答案: 您可以从列表中创建一个。在将包含每个元素只有一次,在相同的顺序。然后从创建一个新的
我很难从自定义对象的ArrayList中删除重复项。 删除重复项 自定义对象等于() 删除重复项后的输出 关于为什么它实际上没有删除重复项,有什么提示吗?或者它实际上是通过将副本替换为原始副本来删除副本?不知道这里发生了什么。
本文向大家介绍2种Java删除ArrayList中的重复元素的方法,包括了2种Java删除ArrayList中的重复元素的方法的使用技巧和注意事项,需要的朋友参考一下 这篇文章将给出两种从ArrayList中删除重复元素的方法,分别是使用HashSet和LinkedHashSet。 ArrayList是Java中最常用的集合类型之一。它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序