Java ArrayList,获取从index()到index()的值

Java ArrayList,获取从index()到index()的值,java,arraylist,Java,Arraylist,大家好,我正在尝试从我创建的ArrayList中获取值。我有一些索引,我只想在我想要的索引之间打印数据,到目前为止我已经这样做了,但它似乎不起作用。我认为get()对于我想要的内容无效。。。有什么想法吗 public static void main(String[] args) throws Exception { Scanner dataSc = new Scanner(new FileReader("StudData1.txt")); ArrayList<Stri

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

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 );}
    }

}
publicstaticvoidmain(字符串[]args)引发异常{
Scanner dataSc=新的扫描仪(新的文件阅读器(“studata1.txt”);
ArrayList ArrayData=新的ArrayList();
ArrayList idData=新的ArrayList();
ArrayList idIndex=新的ArrayList();
int b=0;
int a=0;
int i=0;
while(dataSc.hasNextLine()){
字符串数据=dataSc.nextLine();
ArrayData.add(i,数据);
if(data.contains(“ID:)){
添加(a,数据);
idData.set(a,(idData.get(a).replaceAll(“[\\D]”,“”));
a++;
b++;
}
i++;
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));
intidxid2=Integer.parseInt(idIndex.get(1));
intidxid3=Integer.parseInt(idIndex.get(2));
if(idSt1

}

您可以从
ArrayList
按索引获取值的范围,如下所示

    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));
      }
    }
List List=new ArrayList();
列表。添加(“a”);
列表。添加(“b”);
列表。添加(“c”);
列表。添加(“d”);

for(inti=0;i使用for循环很容易完成

    for(int i = startindex+1; i<endindex; i++) {
        System.out.println(ArrayData.get(i));
    }

输出:a、b、c

问题在于您的代码:

System.out.println(ArrayData.get(idxID1-3 , idxID2-3 );
ArrayListget方法只接受一个参数,这里传递两个参数


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

我会这样做

if (idSt1 < idSt2 && idSt2 < idSt3) {
            for (int j = idxID1-3; j < idxID2-3; j++){
                System.out.println(ArrayData.get(j));
            }

        }
if(idSt1
会尝试的!以前从未使用过子列表请注意
子列表
不是一个独立的实体。您可以使用kai解释的方法SubList
if (idSt1 < idSt2 && idSt2 < idSt3) {
            for (int j = idxID1-3; j < idxID2-3; j++){
                System.out.println(ArrayData.get(j));
            }

        }