public void enqueue(Packet...packets)
{
ArrayList<Packet>type1 = new ArrayList();
ArrayList<Packet>type2 = new ArrayList();
boolean t = true;
for(Packet packet : packets)
{
if(packet.getClassType() == t )
{
type1.add(packet);
}
else
{
type2.add(packet);
}
}
if(queue.isEmpty())
{
if(type1.isEmpty())
{
//DO NOTHING
}
else
{
queue.addAll(type1);
}
if(type2.isEmpty())
{
//DO NOTHING
}
else
{
queue.addAll(type2);
}
}
else
{
for(int i = 1 ; i<=queue.size() ; i++ )
{
if (queue.get(i).getClassType() != t)
{
if(type1.isEmpty())
{
// DO NOTHING
}
else
{
queue.addAll(i, type1);
}
}
}
if(type2.isEmpty())
{
// DO NOTHING
}
else
{
queue.addAll(type2);
}
}
}
在这段代码中,我得到了一个包含字符串类型为true或fase的数组的ArrayList。在第一阶段,我根据他们的classtype对这些数据包进行排序。在此之后,我以特定的方式将这些新的Arraylists(类型1和类型2)添加到另一个arraylist'queue'。 我想知道,在执行此代码之后,类型1和类型2的arraylists是否再次为空,或者我是否应该在我的代码中添加一个函数以在将数据包存储到队列ArrayList后删除它?
亲切的问候
答案 0 :(得分:0)
将ArrayList的内容添加到另一个ArrayList时,您将数据从第一个复制到第二个。所以不,当你这样做的时候,你不会&#34;清空&#34;从一个列表到另一个列表的内容。这意味着您的原始数据仍然存在于type1
和type2
ArrayLists中,现在它也存在于您的新ArrayList中。因此,如果要重用type1
和type2
ArrayLists,最简单的方法就是重新初始化它们,这将使用新的(空)ArrayList对象覆盖引用。你会这样做......
type1 = new ArrayList<>();
type2 = new ArrayList<>();