黑马程序员技术交流社区

标题: 关于集合容器的角标问题,>>>申请技术分。 [打印本页]

作者: 杨华东    时间: 2012-9-24 11:03
标题: 关于集合容器的角标问题,>>>申请技术分。
import java.util.*;
public class Test1
{
public static void main(String[] args)
{
  /*
   * 大家都知道List集合中可以存储 重复元素,咱就按照下面存储。不要考虑自动装箱的问题。
   * */
  List<Integer> lt=new ArrayList<Integer>();
  lt.add(55);
  lt.add(55);
  lt.add(2);
  lt.add(33);
  lt.add(7);
  lt.add(55);
  lt.add(7);
  for(int i:lt)
  {
   System.out.print(i+" ");
  }
  System.out.println();
  System.out.println(lt.size());//获取 容器的长度, 并且输出长度为7。
  System.out.println(lt.indexOf(55));//元素为55的角标难道 都是一样的吗?不可能吧???
  System.out.println(lt.indexOf(7));//元素为7的角标难道  也是一样的吗?不可能吧????
  //在List集合容器中关于角标有点让我混乱。
}
}
//问题有两点!
//第一:在List容器中角标是如何排列的?
//第二:当有重复元素出现时,怎样把重复元素的不同角标给  弄出来  ?
作者: 尤圣回    时间: 2012-9-24 13:08
list底层是数组的 所以他是利用数组定义角标
作者: 王陶成    时间: 2012-9-24 13:17


   List的角标和数组的是一样的,所以两者可以相互转化

获取重复元素 的角标 可以参照数组的方法

for(int i=0; i<lt.size(); i++) {
                        if(lt.get(i)==55) {
                                System.out.println("i : " + i);
                        }
                }


作者: 王贵朝    时间: 2012-9-24 13:51
/第一:在List容器中角标是如何排列的?//其实List的底层是数组,从0开始排练,把数组封装成List就可以使用List中的方法
//第二:当有重复元素出现时,怎样把重复元素的不同角标给  弄出来  ?//LIst好像有iterator方法,通过迭代数组中,判断元素是否相同并获取角标
作者: 郭阳    时间: 2012-9-24 15:44
你的问题在于你没理解indexOf方法,他是返回第一个元素符合要求的角标,而不是所有的!

第一:在List容器中角标是如何排列的?
如果没有指定对象存放的角标位置,那么就存放在最后一个角标位置,按时间顺序依次排列

第二:当有重复元素出现时,怎样把重复元素的不同角标给  弄出来  ?
  1. public static StringBuffer getSame(List<Integer> lt,int index)
  2. {
  3.         StringBuffer sb=new StringBuffer();//创建一个容器来存储角标
  4.         for (int x=0;x<lt.size() ;x++ )
  5.         {
  6.                 if(lt.get(x)==index)//遍历集合元素,如果符合就添加进去(当然这是在集合是int类型的前提下)
  7.                         sb.append(x);
  8.         }
  9.         return sb;
  10. }
复制代码

作者: 杨华东    时间: 2012-9-25 15:38
问题已解决




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