首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList,获取值,从index()到index()

ArrayList,获取值,从index()到index()
EN

Stack Overflow用户
提问于 2014-02-13 11:22:03
回答 4查看 25.3K关注 0票数 4

大家好,我正在尝试从我创建的ArrayList中获取值。我有一些索引,我只想在我想要的索引之间打印数据,到目前为止我已经这样做了,但是它似乎不起作用。我认为get()对于我想要的东西是无效的.有什么想法吗?

代码语言:javascript
复制
public static void main(String[] args) throws Exception {

    Scanner dataSc = new Scanner(new FileReader("StudData1.txt"));

    ArrayList<String> ArrayData = new ArrayList<String>();
    ArrayList<String> idData = new ArrayList<String>();
    ArrayList<String> idIndex = new ArrayList<String>();

    int b = 0;
    int a = 0;
    int i = 0;

    while (dataSc.hasNextLine()) {
        String data = dataSc.nextLine();
        ArrayData.add(i, data);

        if (data.contains("ID: ")) {
            idData.add(a, data);
            idData.set(a, (idData.get(a).replaceAll("[\\D]", "")));

            a++;
            b++;
        }

        i++;
        idIndex.add(b, Integer.toString(i));
    }

    int idSt1 = Integer.parseInt(idData.get(0));
    int idSt2 = Integer.parseInt(idData.get(1));
    int idSt3 = Integer.parseInt(idData.get(2));

    int idxID1 = Integer.parseInt(idIndex.get(0));
    int idxID2 = Integer.parseInt(idIndex.get(1));
    int idxId3 = Integer.parseInt(idIndex.get(2));

    if (idSt1 < idSt2 && idSt2 < idSt3) {

         System.out.println(ArrayData.get(idxID1-3 , idxID2-3 );}
    }

}

}

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-13 11:27:30

这很容易用一个for循环来完成。

代码语言:javascript
复制
    for(int i = startindex+1; i<endindex; i++) {
        System.out.println(ArrayData.get(i));
    }

此循环将打印数组列表中在给定索引之间的所有对象。但是,没有名为get()的方法可以返回给定索引之间的项集合,您只能使用subList(arg0, arg1)方法创建子集合,然后遍历该子集合。看看Docs http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#get%28int%29

示例:

代码语言:javascript
复制
    List<String> al = new ArrayList<>();
    al.add("a");
    al.add("b");
    al.add("c");
    al.add("d");

    List<String> sublist = al.subList(0, 3);  //inclusive index 0, exclusive index 3

    for(String s : sublist)
        System.out.println(s);

产出: a、b、c

票数 8
EN

Stack Overflow用户

发布于 2014-02-13 11:30:03

问题在您的代码中:

代码语言:javascript
复制
System.out.println(ArrayData.get(idxID1-3 , idxID2-3 );

get方法ArrayList只接受一个参数,这里传递两个参数。

您可以使用subList(int fromIndex, int toIndex)来获得所需的结果。

票数 3
EN

Stack Overflow用户

发布于 2014-02-13 11:26:27

您可以按索引从ArrayList获取值范围如下。

代码语言:javascript
复制
    List<String> list=new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");

    for(int i=0;i<4;i++){
      if(i<=2 && i>=1){
          System.out.println(list.get(i));
      }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21752760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档