Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在将ArrayList的最后3个元素复制到列表中<;字符串>;_Java_Arrays_List_Arraylist_Copy - Fatal编程技术网

Java 正在将ArrayList的最后3个元素复制到列表中<;字符串>;

Java 正在将ArrayList的最后3个元素复制到列表中<;字符串>;,java,arrays,list,arraylist,copy,Java,Arrays,List,Arraylist,Copy,我目前试图将每个迭代路径的最后3个元素复制到lastEdgePath中,但没有任何效果。此外,lastEdgePath必须是List类型。ArrayList的列表allpath起作用,对于这个问题,假设它已填充。这就是我所尝试的,目前正在发生的是,最后3个元素作为1添加到lastEdgePath,而我需要将它们作为3个不同的元素添加。示例:如果路径为[1,2,3,4,5,6]lastEdgePath将变为[4,5,6] public static List<ArrayList<Str

我目前试图将每个迭代路径的最后3个元素复制到
lastEdgePath
中,但没有任何效果。此外,
lastEdgePath
必须是
List
类型。ArrayList的列表
allpath
起作用,对于这个问题,假设它已填充。这就是我所尝试的,目前正在发生的是,最后3个元素作为1添加到
lastEdgePath
,而我需要将它们作为3个不同的元素添加。示例:如果路径为[1,2,3,4,5,6]
lastEdgePath
将变为[4,5,6]

public static List<ArrayList<String>> allPaths = new ArrayList<>();

for(ArrayList<String> path : allPaths){
      List<String> lastEdgePath = Collections.singletonList(path.get(path.size() - 3) + path.get(path.size() - 2) + path.get(path.size() - 1));
}
publicstaticlist allpath=newarraylist();
for(ArrayList路径:AllPath){
List lastEdgePath=Collections.singletonList(path.get(path.size()-3)+path.get(path.size()-2)+path.get(path.size()-1));
}

使用
子列表

List<String> lastThreeThings = path.subList(path.size() - 3, path.size());

另外,请注意,这不会处理少于3个元素的列表。如果有可能,请使用
Math.max(0,path.size()-3)
作为开始索引。

使用
子列表

List<String> lastThreeThings = path.subList(path.size() - 3, path.size());

另外,请注意,这不会处理少于3个元素的列表。如果有可能,请使用
Math.max(0,path.size()-3)
作为开始索引。

只需使用subList方法即可

public static List<ArrayList<String>> allPaths = new ArrayList<>();

for(ArrayList<String> path : allPaths){
      List<String> lastEdgePath = path.subList(path.size() - 3, path.size());
}
publicstaticlist allpath=newarraylist();
for(ArrayList路径:AllPath){
List lastEdgePath=path.subList(path.size()-3,path.size());
}

需要注意的一件非常重要的事情是,这将生成指定范围的视图,这意味着子列表中的任何更改都将反映在原始列表中,反之亦然。

只需使用子列表方法即可

public static List<ArrayList<String>> allPaths = new ArrayList<>();

for(ArrayList<String> path : allPaths){
      List<String> lastEdgePath = path.subList(path.size() - 3, path.size());
}
publicstaticlist allpath=newarraylist();
for(ArrayList路径:AllPath){
List lastEdgePath=path.subList(path.size()-3,path.size());
}
需要注意的一件非常重要的事情是,这将生成指定范围的视图,这意味着子列表中的任何更改都将反映在原始列表中,反之亦然