Ⅰ java中 foreach 和迭代器在遍历 List 集合 一些情况下为什么能使用集合自动的删除方法删除元素
你a<70的时候是倒数第二位,也就是66,没有抛出异常是因为之前list大小为5,你删除66后,list大小为4,你第一次遍历list大小为5的数组的时候,66的cursor在index = 4,当你删除后,遍历list大小为4的数组时, cursor = 4 = newlist.size()。
ArrayList里的这个方法就会判断list已经读取完毕了,所以不会抛出异常。
publicbooleanhasNext(){
returncursor!=size;
}
a < 90的时候在第二位就发生了变化,list的大小也发生了变化
看了下ArrayList的源码,每次循环的时候都会call这个方法检查list的大小是否发生了变化,但是这个方法是发生在hasNext方法之后的
(){
if(modCount!=expectedModCount)
();
}
Ⅱ java中list的遍历有几种方式
1.使用索引(index)来遍历List
2.使用Iterator来遍历List。(for-each其实也是利用Iterator)
注意:如果仅仅是遍历,那么可以可以使用索引或Iterator来遍历。但是,如果你在遍历的同时还要删除元素,则最好使用Iterator来遍历和删除元素,这样可以避免异常。
Ⅲ JAVA中LISt遍历时如何remove元素
public
class
RemoveElementDemo
{
public
static
void
main(String[]
args)
{
List<String>
list
=
new
ArrayList<消裂>();
list.add("100012011");
list.add("10001201s1");
list.add("10001201s1");
//中毕解决方案:
//1.i--操作
/*for(int
i
=
0;i
<
list.size();i++){
String
b
=
list.get(i);
if(b.equals("502323232")){
list.remove(i);
i--;
}
}*/
//2.反向遍历
/*for(int
i
=
list.size()
-
1;i
>=
0;i--){
String
b
=
list.get(i);
if(b.equals("502323232")){
list.remove(i);
}
}*/
//解决方案:调用Iterator的remove()方法安全删除元素,避免异常
Iterator<String>
iter
=
list.iterator();
while(iter.hasNext()){
String
b
=
iter.next();
if(b.equals("100012011"卖桥芹)){
iter.remove();
}
}
for(String
b
:
list){
System.out.println(b);
}
}
}
Ⅳ 在for循环里遍历list,然后删除元素会怎样
从list中删除指定元素可中备以使用remove方法来实现:
ArrayList al = new ArrayList();
al.add("a");
al.add("b");
//al.add("b");
//al.add("c");
//al.add("d");
for (int i = 0; i < al.size(); i++) {
if (al.get(i) == "b") {
al.remove(i);
i--;
}
}
在代码中,删除元素后,需要把下标减一。这是因为在每次删除元素后,ArrayList会将后面部分的元素依次往上挪一个位置(就是),所以,下一轮培缺个需要访问的下标还是当前下标,所以腊辩必须得减一才能把所有元素都遍历完。
Ⅳ java 怎么删除List中的指定元素
主要有三种方法:
用一个List 记录要删除的数据猛闭,最后removeAll(List);梁知李
Ⅵ java遍历list 并删除相同值对象
用一个for循环遍历List时,不能删除其中的元素。
用Iterator操作即可。
还有 Pro类要重写一下 toString方法。这样System.out.println里才能打印出来。
import java.util.*;
public class ListTest {
public static void main(String[] args) {
List<Pro> list = new ArrayList();
Pro p1 = new Pro("1000","1000");
Pro p2 = new Pro("1001","1002");
Pro p3 = new Pro("1003","1004");
Pro p4 = new Pro("1005","1006");
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
for (Iterator<Pro> i = list.iterator(); i.hasNext();) {
Pro o = i.next();
if(o.getProid().equals(o.getProName())){
i.remove();
}
}
System.out.println(list);
}
}
class Pro{
private String proid;
private String proName;
public String getProid() {
return proid;
}
public void setProid(String proid) {
this.proid = proid;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public Pro(String proid, String proName) {
super();
this.proid = proid;
this.proName = proName;
}
public Pro() {
}
public String toString() {
return proid + ":" + proName;
}
}
Ⅶ 如何从Java List中取出前100的数据并且删除掉
java List中取出前100的数据并且删除掉,遍历list集合,把数据取出存到新集合,再删除掉,如下方法:
packagecom.test;
importjava.util.ArrayList;
importjava.util.List;
publicclassTestA{
publicstaticvoidmain(String[]args){
//定义集合
List<String>list=newArrayList<String>();
//给集合存150个值
for(intx=1;x<=101;x++){
list.add("a"+x);
}
System.out.println("原集合内容:"+list);
List<String>list2=newArrayList<String>();
//循环获取和移除掉100值
for(intx=0;x<1;x++){
//获取
Stringa=list.get(x);
list2.add(a);
//移除
list.remove(a);
//list2集合够100则跳出循环
if(list2.size()==100){
break;}
//移除掉list集合一个元素,长度减一,标量应该不变所以减一,后面会x++
x--;}
System.out.println("取出的100值:"+list2);
//输出剩下的值
System.out.println("剩下的list值:"+list);}