根据条件删除ArrayList里面的数据

zzxiaoma 2010-06-05 09:49:09
ArrayList al = new ArrayList();
al里面存放的一些数据,具体类型不用关心,比方说是hashtable
String ids[] ={null,"2","3","4",null};
ids里面的数据我只是举了个例子,具体里面应该有很多
al和ids里面的数据长度是相等的

现在要求判断如果ids里面的数据是null,比如说上面索引是0和4的是null
就把al里面的索引是0和4的删除
剩下的数据还在al里面。
...全文
408 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxiaoma 2010-06-05
  • 打赏
  • 举报
回复
希望大家继续说说别的解决方案
zzxiaoma 2010-06-05
  • 打赏
  • 举报
回复
哦,明白了,删除后面的不会影响前面的索引
zzxiaoma 2010-06-05
  • 打赏
  • 举报
回复
为什么反过来就没有问题呢
chan10 2010-06-05
  • 打赏
  • 举报
回复
复用一楼的代码:

for(int i=ads.length-1;i>=0;i--){
if(ads[i] == null){
al.remove(i);
}
}

chan10 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 abc130314 的回复:]
楼上的,List remove 了。索引会变的吧
[/Quote]
可以从后往前按照索引删除吧,这样应该不会有影响了。
hjjk123 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 applerockhool 的回复:]
引用 1 楼 youanyyou 的回复:

Java code

for(int i=0;i<ads.length;i++){
if(ads[i] == null){
al.remove(i);
}
}
//简单吧!呵-_-


使用LinkedList,下标就不会变了
[/Quote]
既然 remove了 索引一定会变的!!
zzxiaoma 2010-06-05
  • 打赏
  • 举报
回复
LinkedList可以吗,我看文档上说他也是索引会变得

还有al里面的数据是不是null无所谓,是数组里面的数据为null,根据为null的位置来删除al里面的数据
hjjk123 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yuan8080 的回复:]
这个
还好!!索引会变的,
ArrayList al=new ArrayList();
al.add("4");
al.add("3");
al.add("5");
al.add(null);
al.add(null);
al.add("hl");
al.add(null);
al.add("li");
al.add("you");
……
[/Quote]
索引变无妨的

他总会在变为0之前遍历完..........
Ade子夜 2010-06-05
  • 打赏
  • 举报
回复
这个
还好!!索引会变的,
ArrayList al=new ArrayList();
al.add("4");
al.add("3");
al.add("5");
al.add(null);
al.add(null);
al.add("hl");
al.add(null);
al.add("li");
al.add("you");
al.add(null);
System.out.println(al);
for(int i=0;i<al.size();i++)
{
if (al.get(i)== null) {
al.remove(i);
i--;
}

}
for(int i=0;i<al.size();i++)
{
System.out.println(al.get(i));
}
Ade子夜 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hjjk123 的回复:]

1楼的不行!!不信 可以试试!!

Java code

ArrayList al=new ArrayList();
al.add("4");
al.add("3");
al.add("5");
al.add(null);
al.add(null);
System.out.……
[/Quote]


顶,棒!!!
lacus87 2010-06-05
  • 打赏
  • 举报
回复

for(int i=ads.length-1;i>=0;i--){
if(ads[i] == null){
al.remove(i);
}
}


这样就行了
  • 打赏
  • 举报
回复
使用ArrayList,进行remove操作,下标是要改变的,所以建议使用链表LinkedList
applerockhool 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youanyyou 的回复:]

Java code

for(int i=0;i<ads.length;i++){
if(ads[i] == null){
al.remove(i);
}
}
//简单吧!呵-_-
[/Quote]

使用LinkedList,下标就不会变了
applerockhool 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youanyyou 的回复:]

Java code

for(int i=0;i<ads.length;i++){
if(ads[i] == null){
al.remove(i);
}
}
//简单吧!呵-_-
[/Quote]

使用LinkedList,下标就不会变了
hjjk123 2010-06-05
  • 打赏
  • 举报
回复

1楼的不行!!不信 可以试试!!

ArrayList al=new ArrayList();
al.add("4");
al.add("3");
al.add("5");
al.add(null);
al.add(null);
System.out.println(al.size());
for(int i=0;i<al.size();i++)
{
al.remove(null);
}
for(int i=0;i<al.size();i++)
{
System.out.println(al.get(i));
}
abc130314 2010-06-05
  • 打赏
  • 举报
回复
楼上的,List remove 了。索引会变的吧
Java技术栈 2010-06-05
  • 打赏
  • 举报
回复

for(int i=0;i<ads.length;i++){
if(ads[i] == null){
al.remove(i);
}
}
//简单吧!呵-_-
lacus87 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 zzxiaoma 的回复:]
还有一点,如果数组的长度小于al集合,那就不能倒着循环了,还有什么最佳答案吗?
[/Quote]

数组长度小于A1集合,看你自己实际业务想怎么删除了:

1、如果只删除数组中为NULL的元素下标所对应的A1元素,倒着删一样不会影响的

2、如果要删除集合中所有为NULL的元素,就倒着遍历集合好了
liuyyuns 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chan10 的回复:]
复用一楼的代码:

Java code

for(int i=ads.length-1;i>=0;i--){
if(ads[i] == null){
al.remove(i);
}
}
[/Quote]
想法很好,学习了。
zzxiaoma 2010-06-05
  • 打赏
  • 举报
回复
还有一点,如果数组的长度小于al集合,那就不能倒着循环了,还有什么最佳答案吗?
加载更多回复(1)

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧