在Java中从arrayList中删除最后n个元素

在Java中从arrayList中删除最后n个元素,java,arraylist,Java,Arraylist,例如: 列表1=[10,20,30,40,50]大小=5 根据列表1=5的大小,我需要从列表2中删除最后5个元素 列表2=[11,23,32,12,21,21] 输出=[11] 所以,如果列表1的大小为n,我需要从列表2中删除最后n个元素? 实现这一目标的有效方法是什么 您可以创建while循环,如下所示: List yourList = ...; // Your list int removed = 0; // Setup the variable for removal counting

例如:

列表1=[10,20,30,40,50]大小=5

根据列表1=5的大小,我需要从列表2中删除最后5个元素
列表2=[11,23,32,12,21,21]

输出=[11]

所以,如果列表1的大小为n,我需要从列表2中删除最后n个元素?

实现这一目标的有效方法是什么

您可以创建
while循环
,如下所示:

 List yourList = ...; // Your list
 int removed = 0; // Setup the variable for removal counting

 while (removed < Math.min(secondList.size(), 5)) { // While we still haven't removed 5 entries OR second list size
   yourList.remove(yourList.size() - 1); // Remove the last entry of the list
   removed++; // Increases 'removed' count
 }
List yourList=…;//你的名单
int removed=0;//设置移除计数的变量
while(删除了
您可以创建
while循环,如下所示:

 List yourList = ...; // Your list
 int removed = 0; // Setup the variable for removal counting

 while (removed < Math.min(secondList.size(), 5)) { // While we still haven't removed 5 entries OR second list size
   yourList.remove(yourList.size() - 1); // Remove the last entry of the list
   removed++; // Increases 'removed' count
 }
List yourList=…;//你的名单
int removed=0;//设置移除计数的变量
while(删除了< /代码> 您可以考虑使用ARALYLIST的子列表(…)方法。您可以考虑使用AARYLIST的子列表(…)方法。< /P> < P>,因为您的<代码> n=List1.Limthh()/Case>第一元素的索引,我们应该开始删除它,可以计算为

/*
  list1:       3, 4, 5, 6 (length=4)
  list2: a, b, c, d, e, f (length=6)
               ^- element from which we start deleting, its index = 2 (6-4)
*/

int indexOfFirstElementToRemove = list2.size() - list1.size();
注意:我们不知道列表1是否总是比列表2小。如果不是,则
索引OffirsTelementToRemove
将为负值或0。在这种情况下,我们需要从列表2中删除所有元素,因此调用
list2.clear()
就足够了

要在迭代时删除元素,我们使用迭代器或ListIterator(如果可用)。要从指定的索引开始迭代,我们可以使用

ListIterator<ElementType> iterator = listOfElements.listIterator(firstElementIndex);
ListIterator迭代器=listOfElements.ListIterator(firstElementIndex);
因此,我们的最终解决方案可以如下所示:

List<Integer> list1 = Stream.of(2, 3, 4, 5).collect(Collectors.toList());
List<Integer> list2 = Stream.of(0, 1, 2, 3, 4, 5).collect(Collectors.toList());

int indexOfFirstElementToRemove = list2.size() - list1.size();

if (indexOfFirstElementToRemove > 0) {

    ListIterator<Integer> iterator = list2.listIterator(indexOfFirstElementToRemove);

    while (iterator.hasNext()) {
        iterator.next();
        iterator.remove();
    }

} else {//indexOfFirstElementToRemove<=0 so we need to remove all elements from list2
    list2.clear();
}
System.out.println(list2); //Output: [0, 1]
List list1=Stream.of(2,3,4,5).collect(Collectors.toList());
List list2=Stream.of(0,1,2,3,4,5).collect(Collectors.toList());
int indexOfFirstElementToRemove=list2.size()-list1.size();
如果(indexOfFirstElementToRemove>0){
ListIterator迭代器=list2.ListIterator(indexOfFirstElementToRemove);
while(iterator.hasNext()){
iterator.next();
iterator.remove();
}

}否则{//indexOfFirstElementToRemove,因为您的
N=list1.length()
我们应该从中开始删除的第一个元素的索引可以计算为

/*
  list1:       3, 4, 5, 6 (length=4)
  list2: a, b, c, d, e, f (length=6)
               ^- element from which we start deleting, its index = 2 (6-4)
*/

int indexOfFirstElementToRemove = list2.size() - list1.size();
注意:我们不知道列表1是否总是比列表2小。如果不是,则
indexOfFirstElementToRemove
将为负值或0。在这种情况下,我们需要从列表2中删除所有元素,因此调用
list2.clear()
就足够了

要在迭代时删除元素,我们使用迭代器或ListIterator(如果可用)。要从指定的索引开始迭代,我们可以使用

ListIterator<ElementType> iterator = listOfElements.listIterator(firstElementIndex);
ListIterator迭代器=listOfElements.ListIterator(firstElementIndex);
因此,我们的最终解决方案可以如下所示:

List<Integer> list1 = Stream.of(2, 3, 4, 5).collect(Collectors.toList());
List<Integer> list2 = Stream.of(0, 1, 2, 3, 4, 5).collect(Collectors.toList());

int indexOfFirstElementToRemove = list2.size() - list1.size();

if (indexOfFirstElementToRemove > 0) {

    ListIterator<Integer> iterator = list2.listIterator(indexOfFirstElementToRemove);

    while (iterator.hasNext()) {
        iterator.next();
        iterator.remove();
    }

} else {//indexOfFirstElementToRemove<=0 so we need to remove all elements from list2
    list2.clear();
}
System.out.println(list2); //Output: [0, 1]
List list1=Stream.of(2,3,4,5).collect(Collectors.toList());
List list2=Stream.of(0,1,2,3,4,5).collect(Collectors.toList());
int indexOfFirstElementToRemove=list2.size()-list1.size();
如果(indexOfFirstElementToRemove>0){
ListIterator迭代器=list2.ListIterator(indexOfFirstElementToRemove);
while(iterator.hasNext()){
iterator.next();
iterator.remove();
}

}否则{//INDEXOFFIRSTELEMENTTOREMOVE这将起作用,但如果列表1有5个元素,而列表2(必须从中删除元素)的大小为2,该怎么办?我还需要跟踪列表2的大小,然后实际上它是一个
倒计时
;)这将起作用,但如果列表1有5个元素,而列表2(必须从中删除元素)会怎么样大小为2。我还需要跟踪列表2的大小,然后实际上它是一个
倒计时
;)是否要更改现有列表,还是要使用列表2中的第一个
x
元素创建新列表,其中
x=list2.size()-list1.size()
?是要更改现有列表,还是要使用列表2中的第一个
x
元素创建新列表,其中
x=list2.size()-list1.size()