黑马程序员技术交流社区

标题: 迭代器查找元素的问题 [打印本页]

作者: 公子-醉香    时间: 2013-12-17 16:13
标题: 迭代器查找元素的问题
  1. public class ListDemo {
  2.         public static void main(String [] args){
  3.                 ArrayList al=new ArrayList();
  4.                 //添加元素
  5.                 al.add("1");
  6.                 al.add("3");
  7.                 al.add("5");
  8.                 al.add("7");
  9.                 sop("原来的集合:"+al);
  10.                 //在指定位置添加元素
  11.                 al.add(1, 2);
  12.                 al.add(3, 4);
  13.                 al.add(5, 6);
  14.                 sop("添加元素后的新集合"+al);
  15.                 sop("--------------------------------------");
  16.                 //删除指定位置的元素
  17.                 sop("删除元素之前的集合"+al);
  18.                 al.remove(1);
  19.                 sop("删除元素之后的集合"+al);
  20.                 sop("--------------------------------------");
  21.                 //修改指定位置的元素
  22.                 sop("修改元素之前的集合"+al);
  23.                 al.set(3, 100);
  24.                 sop("修改元素之后的集合"+al);
  25.                 sop("--------------------------------------");
  26.                 //查找元素
  27.                 sop("使用get()查找到的元素是:"+al.get(3));
  28.                 sop("在一定的区间查找到的元素是:"+al.subList(1, 4));//问题:查找的是角标从1到4位置的元素,为什么显示的是从1到3的呢?
  29.                 Iterator it=al.iterator();
  30.                 while(it.hasNext()){
  31.                         sop("使用迭代器Iterator查找到的元素是:"+it.next());
  32.                 }
  33.                
  34.         }
  35.        
  36.         public static void sop(Object obj){
  37.                 System.out.println(obj);
  38.         }
  39. }
复制代码



作者: Cway㊣    时间: 2013-12-17 16:16
subList(1,4):从1到4但不包含4
见API:
List<E> subList(int fromIndex, int toIndex)
          返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。
作者: 程洋    时间: 2013-12-17 16:46
在集合中,subList(int fromIndex, int toIndex),中包含fromIndex,不包含toIndex,也就是视频中老师常说的包含头不包含尾
作者: 松毛    时间: 2013-12-17 16:49
集合中的区间是包含头不包含尾的!原集合:[1, 3, 4, 100, 6, 7]
使用了al.subList(1, 4)后,打印的就是从位置1都位置3的元素!
作者: 张天昊76    时间: 2013-12-17 17:52
它只包含头不包含尾,所以就没有4咯。
作者: 冯国强    时间: 2013-12-17 21:52
问题是字符串对象方法subString,是获取指定开始,到指定结尾的前一位。所以上述代码指定获取1到4,但不包括4,所以显示出来的是1到3.
如果要获取1到4,则要指定1到5.

作者: 冯国强    时间: 2013-12-17 21:58
修改上述不是字符串对象的方法,而是集合的方法,subList(from,to)。原理和字符串对象的方法subString一样。所以如果要查找1到4的话,要指定1到5.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2