我有一个名为TwoNumbers的类,该类创建一个包含两个数字的对象。我创建了一个包含此对象的ArrayList ,我想将这些对象复制到新的ArrayList中。问题是我只想将不同的对象复制到新的ArrayList中。当对象内部的数字相同时,Java会将每个对象视为不同的对象,但我不知道如何阻止它复制每个对象。两个对象包含num1和num2两个属性,这些属性是从fileReader中读取的。所以基本上每个TwoNumbers对象的数据是:1,23,55,42,1 //accidentally repeated (2,1 means as 1,2)4,61,2 //accidentlly repeated etc.在主代码的文件阅读器中,我读取了所有这些数据,因此,在ArrayList中有TwoNumbers:TwoNumbers TwoNumbers = new TwoNumbers(num1,num2); // where num's are the data to create this objectTwoNumbersArray.add(TwoNumbers);对于该方法,我试图在元素不存在时仅将不同的元素添加到newArrayList中。我的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); } } } } (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 注意:这部分代码仅适用,因为发问者在其构造函数中使用以下if语句:if(n1 < n2 ){ this.num1 = n1; this.num2 = n2;} else { this.num2 = n1; this.num1 = n2;}我不知道我是否正确理解了您的问题,但是请尝试以下方法:public List<TwoNumbers> doStuff(List<TwoNumbers> list) { List<TwoNumbers> returnList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { boolean flag = true; for (int j = i + 1; j < list.size(); j++) { if (list.get(i).getNum1() == list.get(j).getNum1() && list.get(i).getNum2() == list.get(j).getNum2()) { flag = false; } } if (flag) { returnList.add(list.get(i)); } } return returnList;}此方法将遍历列表,如果flag变量设置为false,则我们知道该对象是重复对象,因此我们不必将其添加到returnList。如果您还有其他问题,或者仍然无法解决问题,请随时联系我。 (adsbygoogle = window.adsbygoogle || []).push({});
09-15 15:53