A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄嵘才 中级黑马   /  2012-12-19 17:44  /  1073 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 esirong 于 2012-12-20 12:55 编辑
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 List<String> list = new LinkedList<String>();
  4.                 list.add("A");
  5.                 list.add("B");
  6.                 list.add("C");
  7.                
  8.                 for(int i=0; i<list.size(); i++){
  9.                         list.remove(i);
  10.                 }
  11.                
  12.                 for(String item:list){
  13.                         System.out.println(item);
  14.                 }
  15.         }
  16. }
复制代码
我在网看到这个程序,这个循环删除不能完全
这里,还有会输出B.
那么B为什么没有被删除掉啊。大侠帮帮我解一下。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
你从索引尾数删除试试,你删除了0,那么集合的长度就变成2了。而不是3.
然后又删除索引1,那么,C也没了,所以B删除不掉。

你试试这个
  1. public static void main(String[] args) {
  2.             List<String> list = new LinkedList<String>();
  3.             list.add("A");
  4.             list.add("B");
  5.             list.add("C");
  6.             
  7.             for(int i=list.size()-1; i>=0; i--){
  8.         
  9.                     System.out.println(i+" "+list.remove(i));
  10.             }
  11.             for(String item:list){
  12.                     System.out.println(item);
  13.             }
  14.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
就像楼上说的那样,主要还是你没有理解好

public void remove(int position)从此滚动列表中移除指定位置处的项。如果选中了指定位置的项,并且该项是列表中惟一选中的项,则列表将被设置为无选择。

参数:
position - 要删除项的索引
抛出:
ArrayIndexOutOfBoundsException - 如果 position 小于零或大于 getItemCount()-1

删除后集合长度会减少的。
代码也可以在这样,每次就删除0位置的,
  1. public static void main(String[] args) {
  2.                  List<String> list = new LinkedList<String>();
  3.          list.add("A");
  4.          list.add("B");
  5.          list.add("C");
  6.          int length = list.size();//集合原始长度
  7.          for(int i=0; i<length; i++){
  8.                  list.remove(0);
  9.          }
  10.          
  11.          for(String item:list){
  12.                  System.out.println(item);
  13.          }

  14.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马