使用ArrayList的sublist()返回的是父list的视图,以下3点是摘自sublist的方法说明
- sublist()返回的是ArrayList的内部类
- “非结构性修改”:指不涉及到list的size改变的修改。如执行set()方法父子list都会受到影响,不会报异常,但会有数据使用错误的风险。
- “结构性修改”: 涉及size改变的修改,子list的所有操作都会反映到父list上。但父list的修改将会导致返回的子list失效,子list后续操作报异常
1、sublist()返回的是ArrayList的内部类
如下图,进行类型转换编译报错
2、“非结构性修改”:不涉及到list的size改变的修改,父子list相互影响.
如下图sublist的set()方法不会改变list的size,把index=0的a变为aa,父list同样的a变为aa
3、“结构性修改”: 涉及size改变的修改子list