我有关于Arraylists的问题。我创建了一个用户定义对象的arraylist。在我的绘图程序中,我创建了一个只接受这个arraylist的类。在另一个类中,我创建了这个对象,然后我创建了另一个带有这些对象的arraylist。如果您可以查找我的代码,您可以更好地理解。问题是我必须在添加到最后一个arraylist后删除对象的arraylist的所有元素。但是我总是在删除后失去元素。我使用了clone()方法,然后我总是保留最后的元素。我知道它复制在这里,抱歉我的英语,如果你能查看我的代码,你可以清楚地理解我的意思。
public class Lines {
public int id;
public Point point1;
public Point point2;
public int[] denklem;
}
public class Devline {
ArrayList<Lines> segmentim = new ArrayList<Lines>();
}
...
Devline devarray = new Devline();
Devline devarray3 = new Devline();
ArrayList<Devline> devarray2 = new ArrayList<Devline>();
if(SwingUtilities.isRightMouseButton(e) == true){
devarray3.segmentim = (ArrayList<Lines>) devarray.segmentim.clone();
devarray2.add(devarray3);
devarray = new Devline();
begin = true;
}
这是我如何向devarray添加元素。
devarray.segmentim.add(l1);
我需要将所有元素添加到我的devarray2列表中。每次我点击右键都会将devarray元素添加到devarray2中,所以我可以在devarray2中创建许多不同的devarray元素。谢谢。
答案 0 :(得分:0)
devarray3.segmentim = (ArrayList<Lines>) devarray.segmentim.clone();
devarray2.add(devarray3);
您正在重复向Devline
添加相同的ArrayList
对象。它的segmentim
正在发生变化,因为它正在影响ArrayList中的所有元素。
您需要在每次迭代中向Devline
添加新 devaray2 ArrayList
。由于您正在创建新的devarray
,因此您可以自己使用它:
devarray2.add(devarray);
devarray = new Devline();
begin = true;
此外,您应该更改名称 - devarray
不是数组,应该是devLine
,应该调用Lines
类<{1}}
答案 1 :(得分:0)
你能试试吗
module.exports = function (socket) {
var sockets = this;
console.log('user connected');
socket.on('myEvent', function(data) {
sockets.emit('hello_all_clients',data);
});
}
复制devarray2 arraylist?