我尝试通过索引从arrayList
获取段并保留对原始arrayList的引用,但是当我使用subList
时,它返回list
。我想保留arrayList
结构。为此,做了一个强制转换(错误: java.util.ArrayList $ SubList无法强制转换为java.util.ArrayList )
源代码:
ArrayList< Integer > TAB = new ArrayList< Integer >();
ArrayList< Integer > TAB_Segment = new ArrayList< Integer >();
TAB.add(new Integer( 0 ));
TAB.add(new Integer( 1 ));
TAB.add(new Integer( 2 ));
TAB.add(new Integer( 4 ));
TAB.add(new Integer( 5 ));
TAB_Segment = TAB.subList(0,2); // error
TAB_Segment = (ArrayList<Integer>) TAB.subList(0,2); // error java.util.ArrayList$SubList cannot be cast to java.util.ArrayList)
为了保留我的arrayList结构,我找到了removeRange
。可悲的是,这个功能并没有返回任何东西,它与我真正需要的东西相反。那么,有没有办法实现我的目标?
答案 0 :(得分:0)
您正在编写类ArrayList而不是接口List ... 这就是导致代码中出现问题的漏洞设计的原因...因为你需要将List转换为ArrayList 改变这个:
ArrayList< Integer > TAB = new ArrayList< Integer >();
ArrayList< Integer > TAB_Segment = new ArrayList< Integer >();
这个
List<Integer> TAB = new ArrayList<Integer >();
List<Integer> TAB_Segment = new ArrayList<Integer >();
将解决漏洞问题......
public static void main(String[] args) {
List<Integer> TAB = new ArrayList<>();
List<Integer> TAB_Segment = new ArrayList<>();
TAB.add(new Integer(0));
TAB.add(new Integer(1));
TAB.add(new Integer(2));
TAB.add(new Integer(4));
TAB.add(new Integer(5));
TAB_Segment = TAB.subList(0, 2); // error
TAB_Segment = TAB.subList(0, 2); // error java.uti
}