java list 坑一 sublist

Java List sublist

在java开发中,经常会有对列表的迭代循环遍历需求,其中出了查找、排重、统计意外就是截取需求,比如配置文件读取后找到相应的部分内容行等等

那么很容易会用到sublist方法,这是list自带的方法,我以前常用for循环去赋值给新的list 对象,但是昨天突发奇想试试sublist,结果出问题了。
我在read一个配置文件properties到list之后,有截取一部分行的需求,用了sublist,然后需要对sublist赋值的新的newlist对象进行add需求,结果
程序异常退出,没有报错,在junit里面try之后也看不到,突然感觉问题可能出在sublist方法,然后改回for遍历,ok了,很诡异。然后到网上查了一下
,真是不查不知道,一查吓一跳。也没太搞明白,搬运一下。

![java list 坑一 sublist](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1385728-20220419095752501-1516346223.png)
这个图来自网络,他说sublist与原list是紧密关联的,所以我猜测我的add操作是对原list做了改变,那么我的sublist操作还是在对list遍历的for之内做的,
很多判断条件导致最终越界或者是异常了。
在此谨记一下。

点击查看代码

for (Object map : tList) {
          String start = (String) ((Map) map).get("start");
        String end = (String) ((Map) map).get("end");
        String size = (String) ((Map) map).get("size");
        // boolean b1 = false, b2 = false;
        int s = 0, e = fileContents.size() - 1;

        for (int i = 0; i < fileContents.size(); i++) {//&#x5BF9;fileContents&#x8FDB;&#x884C;&#x5FAA;&#x73AF;&#x67E5;&#x627E;&#x6EE1;&#x8DB3;&#x6761;&#x4EF6;&#x7684;&#x884C;
          // &#x6B63;&#x5411;
          if (fileContents.get(i).indexOf(start.replaceAll(":", "-")) > -1) {
            s = i;
            break;
          }
        }
        for (int i = fileContents.size() - 1; i > -1; i--) {//&#x53CD;&#x5411;&#x5BF9;fileContents&#x8FDB;&#x884C;&#x5FAA;&#x73AF;&#x67E5;&#x627E;&#x6EE1;&#x8DB3;&#x6761;&#x4EF6;&#x7684;&#x884C;
          if (fileContents.get(i).indexOf(end.replaceAll(":", "-")) > -1) {
            e = i;
            break;
          }
        }
        // System.out.println(s + "#" + e);
        List<string> subList = new ArrayList<string>();//&#x8FD9;&#x4E2A;&#x5730;&#x65B9;&#x672C;&#x6765;&#x6253;&#x7B97;&#x7528;fileContents.sublist(s,e)&#x7684;&#xFF0C;&#x7ED3;&#x679C;&#x65E0;&#x6CD5;&#x518D;add&#xFF08;&#xFF09;
          for (int i = s; i < e + 1; i++) {
            subList.add(fileContents.get(i));
          }
          // fileContents.subList(s, e < fileContents.size() - 1 ? e + 1 : e + 1);

          try {
            String s1 = subList.get(subList.size() - 2);
            // System.out.println(s1);
            subList.add(s1);
            s1 = subList.get(subList.size() - 2);

            subList.add(s1);

          } catch (Exception e2) {
            System.out.println(e2.getMessage());
          }
          cropsFileListMap.put("&#x7B2C;" + (cont + 1) + "&#x9898;", subList);
          // System.out.print("&#x7B2C;" + (cont + 1) + "&#x9898;:");
          // System.out.println(subList);
          cont++;
</string></string>

Original: https://www.cnblogs.com/gr13811787801/p/16163988.html
Author: 守护一一
Title: java list 坑一 sublist

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570951/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java容器相关知识点整理

    结合一些文章阅读源码后整理的Java容器常见知识点。对于一些代码细节,本文不展开来讲,有兴趣可以自行阅读参考文献。 思维导图 各个容器的知识点比较分散,没有在思维导图上体现,因此看…

    Java 2023年5月29日
    054
  • Spring-Cloud-Commons模块

    本文介绍SpringCloud的另一个基础模块 Spring Cloud Commons模块 。只要在项目的pom文件中引入了 spring-cloud-starter 依赖包 ,…

    Java 2023年5月30日
    070
  • 会话技术 cookie 和 Session(1)

    CookieCookie 属于客户端会话技术,它是服务器发送给浏览器的小段文本信息,存储在客户端浏览器的内存中或硬盘上。当浏览器保存了Cookie 后,每次访问服务器,都会在HTT…

    Java 2023年6月9日
    087
  • 800java面试题

    800java面试题1、meta标签的作用是什么2、ReenTrantLock可重入锁(和synchronized的区别)总结3、Spring中的自动装配有哪些限制?4、什么是可变…

    Java 2023年5月29日
    078
  • 基于texlive定制chemfig化学式转换Python服务镜像

    chemfig 据别人介绍,在绘制平面分子式,乃至化学反应式、机理图时,大家使用的基本都是ChemDraw。当然ChemDraw是一款强大的软件,无论是平面的还是立体的分子结构式都…

    Java 2023年6月7日
    084
  • 高考志愿填报:java 软件 程序员 目前的就业现状

    大约在17年前,也就是2000年,学计算机专业的学生可以有大部分都进入本专业,并且就业非常容易。哪怕只会office套件,想找个工作也很简单。那时候学计算机就是最热门的行业。 那时…

    Java 2023年6月9日
    057
  • LocalDateTime接收前端String格式

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; 实…

    Java 2023年6月6日
    078
  • Spring进一步学习

    1、beans.xml编写 2、别名 (1)alias (2)name 3、依赖注入(DI) (1)数组注入 (2)List注入 (3)Map注入 (4)set注入 (5)Null…

    Java 2023年6月5日
    066
  • git分支

    来自csdn摘抄:https://blog.csdn.net/hustpzb/article/details/7287948?utm_medium=distribute.pc_re…

    Java 2023年6月8日
    067
  • 解决WebStorm开发vue提示Module is not installed、Unresolved variable or type

    WebStorme2021.1版本: Setting->Languages->JavaScript->Webpack由原先的disable选为Automatica…

    Java 2023年6月5日
    0105
  • Java SE Object类

    当直接输出一个对象时,toString 方法会被默认的调用 System.out.println(monster); //&#x5C31;&#x4F1A;&…

    Java 2023年6月7日
    071
  • logback.xml 配置文件

    logback.xml

    Java 2023年6月14日
    079
  • java异常处理

    捕获和抛出异常 异常处理的五大关键字:try,catch,finally,throw,throws 用法: ​ try{可能会出现异常的代码 ​ } catch(Exception…

    Java 2023年6月9日
    066
  • Cnblogs-Theme-SimpleMemory 定制分享

    配置文件 这是我个人参考官方的配置指南根据自己的需求配置的, 部分功能添加后效果不理想故而注释 用户图像横幅图片,推荐下载保存到本地然后上传到 Github 再用此连接。 防止日后…

    Java 2023年6月5日
    070
  • 油猴插件安装以及好用的脚本推荐

    现在浏览器不搞几个插件和IE浏览器有啥区别,因此今天推荐一下及其强力的油猴(Tampermonkey)插件。 一、Tampermonkey插件安装 想使用插件首先要安装插件,我这里…

    Java 2023年6月13日
    068
  • 开源软件SoftEther拆分隧道突破

    最近在寻找比较好用的开源VPN,感觉SoftEther很符合我的需求。一方面是SoftEther属于开源软件并且一直在更新,另一方面是功能强大,好用。 VPN支持路由功能和NAT功…

    Java 2023年6月5日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球