为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 ArrayList 中的最后一个元素存储到另一个 ArrayList (Java)

如何将 ArrayList 中的最后一个元素存储到另一个 ArrayList (Java)

慕无忌1623718 2021-12-22 16:45:28
我有一个文本文件,读取NFR1: (some text) NFR2: (some text)NFR3: (some text)我想将具有模式“N”的文本文件中的所有字符串分组。这是我到目前为止的代码:import java.util.List;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main {public static void main(String[] args) throws FileNotFoundException {    List<String> result = new ArrayList<String>();    Pattern patt = Pattern.compile("^N.*");    BufferedReader r = new BufferedReader(new FileReader("fileName"));    String line;    try {        while ((line = r.readLine()) != null) {          Matcher m = patt.matcher(line);          while (m.find()) {            int start = m.start(0);            int end = m.end(0);            result.add(m.group());            System.out.println(result);          }        }    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}}输出如下:[NFR1:][NFR1:,NFR2:][NFR1:,NFR2:,NFR3]我如何让数组只读[NFR1:,NFR2:,NFR3]没有上面的其他两个元素?当我添加代码行以获取最后一个元素时:if (result != null && !result.isEmpty()) {              System.out.println("Last element is:");              System.out.println(result.get(result.size()-1));             }输出是:The last element is:NFR1:The last element is:NFR2:The last element is:NFR3:我究竟做错了什么?
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

你没有做错任何逻辑。只是您在 while 循环内而不是在外面打印。


while ((line = r.readLine()) != null) {

  Matcher m = patt.matcher(line);

  while (m.find()) {


    int start = m.start(0);

    int end = m.end(0);

    result.add(m.group());

    //System.out.println(result); printing inside and so first u add 1 then 2 then 3.

  }

}


System.out.println(result);//Move here

if(!result.isEmpty()){//result != null is redundant. You have already initialized.

  System.out.println("Last element is:" + result.get(result.size() - 1));

}


查看完整回答
反对 回复 2021-12-22
?
MM们

TA贡献1886条经验 获得超2个赞

因为您在循环中打印输出,每个循环都会有一个输出。


要纠正它,只需将输出移出循环即可。


例如


List<Integer> rest = new ArrayList<Integer>();

for(int i=0;i<2;i++){

rest.add(i);

System.out.println(result);

}

输出


i=0: [0]

i=1: [0,1]

纠正它:


List<Integer> rest = new ArrayList<Integer>();

for(int i=0;i<2;i++){

rest.add(i);

}

System.out.println(result);

结果将输出 [0,1]


查看完整回答
反对 回复 2021-12-22
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信