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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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容器中角标是如何排列的?
//第二:当有重复元素出现时,怎样把重复元素的不同角标给  弄出来  ?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
list底层是数组的 所以他是利用数组定义角标

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报


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

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

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

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
/第一:在List容器中角标是如何排列的?//其实List的底层是数组,从0开始排练,把数组封装成List就可以使用List中的方法
//第二:当有重复元素出现时,怎样把重复元素的不同角标给  弄出来  ?//LIst好像有iterator方法,通过迭代数组中,判断元素是否相同并获取角标

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
你的问题在于你没理解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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

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