zoukankan      html  css  js  c++  java
  • java.util.List接口的方法subList()的使用注意事项

    JDK中,List接口有一个实例方法List<E> subList(int fromIndex, int toIndex),

    其作用是返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表(List)。 

    但值得注意的是,返回的这个子列表的幕后其实还是原列表;

    也就是说,修改这个子列表,将导致原列表也发生改变;反之亦然。 

    下面是一段实例代码: 

    Java代码  收藏代码
    1. import java.util.ArrayList;  
    2. import java.util.List;  
    3.   
    4. public class TestSubList {  
    5.   
    6.     public static void main(String[] args) {  
    7.         List<Integer> test = new ArrayList<Integer>();  
    8.         //init list  
    9.         for (int i = 0; i < 5; i++) {  
    10.             test.add(i);    //auto boxing  
    11.         }  
    12.         //display the list  
    13.         System.out.print("the orginal list: ");  
    14.         for (int i = 0; i < test.size(); i++) {  
    15.             System.out.print(test.get(i) + " ");  
    16.         }  
    17.         System.out.println();  
    18.           
    19.         //sub list  
    20.         List<Integer> sub = test.subList(1, 3);       //sub list contains elements: 1, 2  
    21.         sub.remove(1);      //remove element “2” from sub list  
    22.           
    23.         //display the list again  
    24.         System.out.print("the orginal list after sublist modified: ");  
    25.         for (int i = 0; i < test.size(); i++) {  
    26.             System.out.print(test.get(i) + " ");  
    27.         }  
    28.         System.out.println();  
    29.     }  
    30.   
    31. }  



    程序运行结果: 
    the orginal list: 0 1 2 3 4 
    the orginal list after sublist modified: 0 1 3 4 

    在这段代码中,我们并没有改变原始列表“test”其中的元素。然而,当删除由subList方法得到的子列表中的元素时,原始列表中的该元素也被删除了。

    public static void main(String[] args) {


    List<Integer> list=new ArrayList<>();
    for(int i=0;i<5;i++){
    list.add(i);
    }
    System.out.println(list);
    List<Integer> list01=list.subList(1, 4);
    list01.add(6);
    System.out.println(list01);
    System.out.println(list.toString());
    System.out.println(list);

    }

    结果:

    [0, 1, 2, 3, 4]
    [1, 2, 3, 6]
    [0, 1, 2, 3, 6, 4]
    [0, 1, 2, 3, 6, 4]

  • 相关阅读:
    Handler类简介
    Collections 类
    git
    Java NIO总结
    Java I/O随笔
    Java可变参数
    Java静态导入
    Java I/O流体系中常见的流分类
    设计模式之简单工厂模式(Java)
    PL/SQL学习笔记
  • 原文地址:https://www.cnblogs.com/jiangyi666/p/5741887.html
Copyright © 2011-2022 走看看