唯一Java 2D阵列列表
我正在尝试创建一个独特的2d arraylist。列数是固定的,行数应该是动态的。但是,对于第一列,我希望将类型设置为chars。其余列应为int类型。有没有办法做到这一点?我用它进行算术压缩 这就是我现在拥有的唯一Java 2D阵列列表,java,arraylist,compression,Java,Arraylist,Compression,我正在尝试创建一个独特的2d arraylist。列数是固定的,行数应该是动态的。但是,对于第一列,我希望将类型设置为chars。其余列应为int类型。有没有办法做到这一点?我用它进行算术压缩 这就是我现在拥有的 //encoding section float low = 0; float high = 1; float range = high - low; List<int[]> rowList = new ArrayList<i
//encoding section
float low = 0;
float high = 1;
float range = high - low;
List<int[]> rowList = new ArrayList<int[]>();
rowList.add(new int[] { 1, 2, 3 });
rowList.add(new int[] { 4, 5, 6 });
rowList.add(new int[] { 7, 8 });
for (int[] row : rowList)
{
System.out.println("Row = " + Arrays.toString(row));
}
//编码部分
低浮动=0;
浮动高=1;
浮动范围=高-低;
List rowList=new ArrayList();
添加(新的int[{1,2,3});
添加(新的int[{4,5,6});
添加(新的int[]{7,8});
对于(int[]行:行列表)
{
System.out.println(“Row=“+Arrays.toString(Row));
}
这就是你想要的
List<Object[]> rowList = new ArrayList<Object[]>();
rowList.add(new Object[] { 'a', 5, 6 });
rowList.add(new Object[] { 'b', 5, 6 });
rowList.add(new Object[] { 7, 8 });
for (Object[] row : rowList)
{
System.out.println("Row = " + Arrays.toString(row));
}
创建符合您需要的类:
public class My2DArray {
private char[] firstColumn;
private int[][] otherColumns;
// + constructor, getters, setters
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for(int row = 0 ; row < firstColumn.length ; ++row) {
sb.append(firstColumn[row]);
for(int col = 0 ; col < otherColumns[row].length ; ++col) {
sb.append(", ").append(otherColumns[row][col]);
}
sb.append(System.getProperty("line.separator"));
}
return sb.toString();
}
}
公共类My2DArray{
私有字符[]第一列;
私有int[][]其他列;
//+构造函数、getter、setter
@凌驾
公共字符串toString(){
StringBuilder sb=新的StringBuilder();
for(int row=0;row
对象路由可能是最适合您的方式。特别是因为Arraylist/Arraylist不是为原语定义的。您需要使用整数类型
即使这样,您也需要两个数组列表,一个用于整数,一个用于字符
见这个问题:
了解更多信息。您可以创建一个包装器类来强制这些类型。对于误解,我深表歉意。我希望第一列而不是第一行由所有字符组成。请看我的修改,别忘了竖起大拇指。太完美了!不知道我们可以那样做。我会竖起大拇指的!这不是应该反过来做吗?创建一个包含字符和整数数组的类
行
。在这里,你给一个班级分配了很多责任。
public class My2DArray {
private char[] firstColumn;
private int[][] otherColumns;
// + constructor, getters, setters
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for(int row = 0 ; row < firstColumn.length ; ++row) {
sb.append(firstColumn[row]);
for(int col = 0 ; col < otherColumns[row].length ; ++col) {
sb.append(", ").append(otherColumns[row][col]);
}
sb.append(System.getProperty("line.separator"));
}
return sb.toString();
}
}