Skip to main content
 首页 » 编程设计

java中将 ArrayListArrayListInteger>> 转换为 ListListInteger>>

2025年05月04日22leader

我在工作中遇到了一些编码挑战,我们需要执行相当多的业务逻辑,从而生成一个整数列表列表。我在整数 ArrayList 的 ArrayList 中有所需的信息,但永远无法弄清楚如何将其转换为正确的返回类型。

在键入时使用 T 或 Object 也有很多变体。我搜索过堆栈溢出,有很多类似的问题,但没有一个给我直接的答案;他们更加概念化。

需要回答的问题: 输出必须是

    List<List<Integer>> (not negotiable).  

鉴于现有:

    ArrayList<ArrayList<Integer>> **currentArrayList** HOW do you convert that to a List<List<Integer>>.  

我不再需要代码,但是能够完成所有逻辑但不能完成简单的类型转换会让我发疯。

List<List<Integer>> returnList(){ 
    ArrayList<ArrayList<Integer>> currentArrayList = new ArrayList<ArrayList<Integer>>(); 
    ArrayList<Integer> innerList = new ArrayList<Integer>(); 
    innerList.add(new Integer(123)); 
    currentArrayList.add(innerList); 
    List<List<Integer>> newList = ???? 
    // ??Logic to copy over currentArrayList into newList??? 
    return newList; 
}  

请您参考如下方法:

您应该针对接口(interface)进行工作并删除确切的实现细节。在您的示例中,使用对 List<List<Integer> 的引用相反,因为您可以添加任何 List实现它,包括您的 ArrayList .

public List<List<Integer>> returnList(){ 
    List<List<Integer>> currentList = new ArrayList<>(); 
    List<Integer> innerList = new ArrayList<>(); 
    innerList.add(123); 
    currentList.add(innerList); 
    return currentList; 
} 

如果您需要返回新的List ,只需将其包装到另一个中即可:

return new ArrayList<>(currentList); 

或者,返回 List不可修改:

return Collections.unmodifiableList(currentList); 

编辑

如果你真的被 ArrayList 困住了您可以将其转换为 List

return (List) currentArrayList; 

此转换会引发编译器警告,但您可以使用 @SuppressWarnings("unchecked") 忽略它。因为您知道返回了正确的类型。