当前位置: 首页 > 知识库问答 >
问题:

如何只将不同的元素从一个arrayList复制到另一个arrayList

文国发
2023-03-14

我有一个名为TwoNumbers的类,它创建一个包含两个数字的对象。我创建了一个包含此对象的ArrayList<>,并希望将这些对象复制到新的ArrayList中。

问题是我只想将不同的对象复制到新的ArrayList中。当对象内部的数字可能相同时,Java将每个对象视为不同的对象,我不知道如何阻止它复制每个对象。

1,2 
3,5
5,4
2,1 //accidentally repeated (2,1 means as 1,2)
4,6
1,2 //accidentlly repeated etc.
TwoNumbers TwoNumbers = new TwoNumbers(num1,num2); // where num's are the  data to create this object 
TwoNumbersArray.add(TwoNumbers);

我的TwoNumber类:公共TwoNumbers(int n1,int n2)

{
    if(n1 < n2 ){
        this.num1 = n1;
        this.num2 = n2;
    } else
    {
        this.num2 = n1;
        this.num1 = n2;
    }
}

public int getNum1()
{
    return num1;
}

public int getNum2()
{
    return num2;
}

我尝试的方法是:

public void addNew2 (List<TwoNumbers> TwoNumbersArray, List<TwoNumbers> newArrayList){
        for (TwoNumbers e: TwoNumbersArray){
            for (int i = 0; i<TwoNumbersArray.size(); i++){
                if (e.getNum1() != newArrayList.get(i).getNum1() && e.getNum2() != newArrayList.get(i).getNum2()){
                    newArrayList.add(e);
                }
            }
        }
    }

共有1个答案

齐阳
2023-03-14
List<TwoNumbers> newList = oldList.stream().distinct().collect(Collectors.toList());

由于您在构造函数中进行了保证,因此number1属性中将包含较小的number。类重写这些方法,如下所示。

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + number1;
    result = prime * result + number2;
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    TwoNumbers other = (TwoNumbers) obj;
    if (number1 != other.number1)
        return false;
    if (number2 != other.number2)
        return false;
    return true;
}
 类似资料:
  • 问题内容: 我有一些数据结构,我想将其中一个用作临时结构,将另一个用作非临时结构。 现在的问题当然是实际上只是指向,因此一旦清除,也是如此。 如何在使用Java时保留值? 问题答案: 您可以使用以下技巧: 或使用 您可以在此处获取有关clone()方法的一些信息 但是您应该记住,所有这些方式都会给您 List 的副本,而不是其所有元素。因此,如果您更改复制的列表中的元素之一,则它也将在原始列表中进

  • 我目前有一个ArrayList,其中包含“Product”对象,每个对象中包含一个字符串、整数和double。我希望能够使用参数搜索对象,找出与搜索参数匹配的ID(整数值),并将此对象复制到另一个ArrayList中。有没有可能通过迭代器实现这一点,或者有没有更简单的方法?

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 我有两个具有相同属性名称的java类。如何将所有属性复制到另一个充满数据的bean。我不想使用传统的表单复制属性,因为我有很多属性。 提前感谢。 1类 2类

  • 给定两个排序整数数组A和B,将B合并为A作为一个排序数组。 注意:您必须修改数组A,以包含A和B的合并。不要在代码中输出任何内容。提示:C用户,请将结果malloc到一个新的数组中并返回结果。 如果A和B中初始化的元素数分别为m和n,则代码执行后数组A的结果大小应为m+n