日期:2014-05-20  浏览次数:20714 次

这个程序跌代器用与不用的区别在哪里?
问题已写在程序的注释里了,请帮我解惑!

import java.util.*;

public class Test
{
public static void main(String [] args)
{
           List<String> staff = new LinkedList<String>();
           staff.add("abc");
           staff.add("efg");
           staff.add("opq");
           staff.add("rst");
           
           staff.remove("abc");//这一行的作用为什么要用下面三行来实现,就这一行不是更方便吗?
        
//           Iterator<String> it = staff.iterator();           
//           String first = it.next();
//           it.remove();
                     
           List<String>students = new LinkedList<String>();
           students.add("ooo");
           students.add("eee");
           
           staff.addAll(students);          
           System.out.println(staff);
                      
}
}

------解决方案--------------------
两种方式的效果都是一样的,但是出发点是不同的
第一种方式是根据内容删除数据的,也就是说第一种方式的目的是要删除内容为  abc 的那一条数据
而第二种方式是根据位置来删除数据的,也就是说第二种方式的目的是要删除第一条数据
------解决方案--------------------

staff.remove("abc");

这样写就是不管你这个"abc"string对象在什么位置,移除之。但这需要你知道这个对象的内容是"abc"


//           Iterator<String> it = staff.iterator();           
//           String first = it.next();
//           it.remove();

这里不管怎么样,都是移除第一个元素,所以不需要知道第一个元素是什么
------解决方案--------------------
具体用哪个得看需求 哪个方便用哪个