首页 > 解决方案 > 有没有办法在 Java 中以类型安全的方式声明 List 的二维数组?

问题描述

这是我拥有的代码,但在我调整和实例化数组时会出现类型安全警告:

import java.util.ArrayList;
import java.util.List;

public class Test {

    private static final int MAX_ROWS = 2;
    private static final int MAX_COLS = 5;
    
    private List<String> _stringSets[][];
    
    public Test() {
        _stringSets = new List[MAX_ROWS][MAX_COLS];
        
        for(int row = 0; row < MAX_ROWS; row++) {
            for(int col = 0; col < MAX_COLS; col++) {
                _stringSets[row][col] = new ArrayList<String>();
            }
        }
    }
}

我试过了

_stringSets = new List<String>[MAX_ROWS][MAX_COLS];

但这行不通...

标签: javalistmultidimensional-arraytype-safety

解决方案


列表是一维的,可以这样声明:

List<String> myList = new ArrayList<>()

当您似乎正在寻找一个二维数组时,其声明如下:

String[][] myArray = new String[n1][n2]

所以你想要的可能是这些方面的东西:

public class Test {

    private static final int MAX_ROWS = 2;
    private static final int MAX_COLS = 5;

    private String[][] stringSets;

    public Test() {
        stringSets = new String[MAX_ROWS][MAX_COLS];

        for(int row = 0; row < MAX_ROWS; row++) {
            for(int col = 0; col < MAX_COLS; col++) {
                stringSets[row][col] = row+"-"+col;
            }
        }
    }
}

推荐阅读