关键词:
【中文标题】从java中的二维数组中获取列【英文标题】:get columns from two dimensional array in java 【发布时间】:2022-01-06 21:52:08 【问题描述】:在二维数组中,我可以轻松获取行的数组,如何将列也作为数组获取?我需要一个也适用于对象的解决方案,而不仅仅是原语。谢谢
int counter = 1;
int[][] matrix = new int[9][9];
for (int x = 0; x < matrix.length; x++)
for (int y = 0; y < matrix[0].length; y++)
matrix[x][y] = counter;
System.out.print(counter + " ");
counter++;
System.out.println();
for (int x = 0; x < matrix.length; x++)
int[] row = matrix[x];
【问题讨论】:
如果其中一个答案解决了您的问题,请将其标记为已接受的答案。 【参考方案1】:没有简单的方法。您必须遍历数组并自己构造列数组。
您应该注意,如果您的二维数组具有不同长度的行,则“列数组”的定义不明确。例如,如果第 2 行只有 2 列,您将如何创建第 3 列数组?
如果您的二维数组是一个矩阵(即所有行的长度相同),那么创建一个二维数组就很容易了,它的行是原始二维数组的列。然后就可以轻松获取原始数组的列了。
【讨论】:
【参考方案2】:你可以这样做:
for(int row = 0; row < numRows; row++)
colArray[row] = my2Darray[row][columnOfInterest];
Apache commons 有这方面的工具,请查看this answer。
【讨论】:
【参考方案3】:没有“开箱即用”的方法,但您可以为此创建一个静态方法:
public static Object[] getColumn(Object[][] array, int index)
Object[] column = new Object[array[0].length]; // Here I assume a rectangular 2D array!
for(int i=0; i<column.length; i++)
column[i] = array[i][index];
return column;
【讨论】:
【参考方案4】:这是一个使用 Java 8 流的方法:
int[] getColumn(int[][] matrix, int column)
return IntStream.range(0, matrix.length)
.map(i -> matrix[i][column]).toArray();
如果你想处理太短的行:
int[] getColumn(int[][] matrix, int column, int defaultVal)
return IntStream.range(0, matrix.length)
.map(i -> matrix[i].length < column ? defaultVal : matrix[i][column])
.toArray();
【讨论】:
【参考方案5】:这是另一个适用于对象的 Java 8 答案:
// Make 2D array of objects
Obj[][] obj = new Obj(0),new Obj(1),new Obj(2),new Obj(3);
// To get a row:
int rowToGet = 1;
Obj[] oRow = obj[rowToGet];
// To get a column:
int colToGet = 1;
Obj[] oCol = Arrays.stream(obj).map(o -> o[colToGet]).toArray(Obj[]::new);
// Print the row:
System.out.println(Arrays.toString(oRow));
// Print the column:
System.out.println(Arrays.toString(oCol));
// Here is the object used for this example
class Obj
int in;
String str;
public Obj();
public Obj(int in)
this.in = in;
switch(in)
case 0:
str = "zero";
break;
case 1:
str = "one";
break;
case 2:
str = "two";
break;
case 3:
str = "three";
break;
@Override
public String toString()
return String.format("%d=%s",in,str);
这将产生输出:
Extracted row: [2=two, 3=three]
Extracted col: [1=one, 3=three]
【讨论】:
【参考方案6】:你可以这样做:
private <T> T[] getColumn(int address, T[][] from)
return (T[]) Arrays.stream(from).map(x -> x[address]).toArray(Object[]::new);
【讨论】:
【参考方案7】:如上所述没有直接的方法来获取列长度,但有一个解决方案
out[][]=new String[a][b] // Example of multidimensional array
要获取列的长度,out[][]的长度 这样做:-
String []temp = out[a] //a = index of row of which columns you want
int length = temp.legnth;
对不起,我不擅长解释
【讨论】:
无法从 JDBC 获取 OUT 参数中的二维关联数组
】无法从JDBC获取OUT参数中的二维关联数组【英文标题】:Unabletoget2-dassociativearrayinOUTparamfromJDBC【发布时间】:2019-09-1914:32:29【问题描述】:我创建了一个接受5个IN参数和1个OUT参数的过程。该过程的目的是将重复行合并到一行中... 查看详情
如何从二维数组中获取一维列数组和一维行数组? (C#.NET)
】如何从二维数组中获取一维列数组和一维行数组?(C#.NET)【英文标题】:Howtoget1Dcolumnarrayand1Drowarrayfrom2Darray?(C#.NET)【发布时间】:2013-05-1405:08:25【问题描述】:我有double[,]Array;。是否有可能在不复制每个元素(用于)的情况... 查看详情
如何从二维 java 数组中获取一列?
】如何从二维java数组中获取一列?【英文标题】:Howtogetacolumnfroma2Djavaarray?【发布时间】:2010-11-0920:46:38【问题描述】:我知道二维数组是数组的数组。要获得一行,您可以这样做:rowArray=my2Darray[row]由于每一行可以有不同的大... 查看详情
从 C 中的文件输入创建二维数组
】从C中的文件输入创建二维数组【英文标题】:CreatingatwodimensionalarrayfromafileinputinC【发布时间】:2012-11-0703:31:32【问题描述】:TL;DR:在二维数组中苦苦挣扎。我正在尝试从文本文件中的整数列表创建两个二维数组。这是用C编... 查看详情
java示例代码_从返回二维数组的方法中获取值
java示例代码_从返回二维数组的方法中获取值 查看详情
如何从node.js中的二维数组中获取随机项[重复]
】如何从node.js中的二维数组中获取随机项[重复]【英文标题】:Howtogetrandomitemsfromtwodimensionalarrayinnode.js[duplicate]【发布时间】:2017-04-2520:47:42【问题描述】:我有一个纬度和经度的二维数组,如下所示-arrLoc=[[18.3,70.2],[20.5,75.4],[19.... 查看详情
Golang从二维数组中切片列?
】Golang从二维数组中切片列?【英文标题】:Golangslicecolumnsfrom2darray?【发布时间】:2013-03-1503:09:58【问题描述】:我很好奇,如何从二维数组创建列切片?我有一个用于井字游戏棋盘的数组,我正在尝试创建一个列切片,但我的... 查看详情
剑指offer二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:二维数组行递增,列递增... 查看详情
从 BigQuery 中的重复嵌套列中获取参数数组
】从BigQuery中的重复嵌套列中获取参数数组【英文标题】:GettinganarrayofaparameterfromrepeatednestedcolumninBigQuery【发布时间】:2019-11-1415:06:57【问题描述】:我有一个表,其中一列定义为:my_columnARRAY<STRUCT<keySTRING,valueFLOAT64,descriptio... 查看详情
如何从二维数组中的多个key中获取指定key的值?
精华LOVEME962016-10-2110:40:19浏览(1512)回答(3)赞(0)新手求教:二维数组中一般会有多个key,如果我们要获得指定key的值,应该怎么做?问题标签:php回答(3)TimberSwift2016-10-21第一种:最简单的方法:foreach遍历数组,代码:foreach($arras$key... 查看详情
java示例代码_:如何从二维双数组中获取指定坐标的整数(x,y)
java示例代码_:如何从二维双数组中获取指定坐标的整数(x,y) 查看详情
从 pyspark 中的数据框数组类型列中获取“名称”元素
】从pyspark中的数据框数组类型列中获取“名称”元素【英文标题】:Get"name"elementsfromdataframearraytypecolumninpyspark【发布时间】:2019-02-1412:02:37【问题描述】:我已经生成了pyspark.sql.dataframe.DataFrame,其中列名称为cast和score。... 查看详情
有序二维数组中的查找
一个二维数组,每一行按照从左到右递增,每一列按照从上到下递增,查找数组中是否存在某个数。如数组:1 2 8 92 4 9 124 7 10 136 8 11 15思路: 这道题有其特殊性,从... 查看详情
java剑指offer二维数组中的查找
本文参考自《剑指offer》一书,代码采用Java语言。题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组... 查看详情
为啥在 C# 中的二维数组中按列写入速度很慢
】为啥在C#中的二维数组中按列写入速度很慢【英文标题】:WhywritingbycolumnisslowintwodimensionalarrayinC#为什么在C#中的二维数组中按列写入速度很慢【发布时间】:2021-04-0619:32:01【问题描述】:当我按列添加值时,我有一个二维数组... 查看详情
Numpy - 从数组中切片二维行或列向量
】Numpy-从数组中切片二维行或列向量【英文标题】:Numpy-slicing2droworcolumnvectorfromarray【发布时间】:2015-12-2205:23:48【问题描述】:我正在尝试找到一个巧妙的小技巧,用于从二维数组中分割行/列并获得(col_sizex1)或(1xrow_size)的数组... 查看详情
从 JSON 字符串中的二维数组中检索值
】从JSON字符串中的二维数组中检索值【英文标题】:Retrievingvaluesfrom2DarrayinJSONstring【发布时间】:2016-01-1617:28:51【问题描述】:我们使用这样的REST协议获取一些JSON数据。jsonResult=tryNSJSONSerialization.JSONObjectWithData(data!,options:NSJSONRe... 查看详情
如何从python中的数组(或矩阵)中提取除一列之外的所有列?
】如何从python中的数组(或矩阵)中提取除一列之外的所有列?【英文标题】:Howtoextractallcolumnsbutonefromanarray(ormatrix)inpython?【发布时间】:2014-07-2411:45:12【问题描述】:给定一个numpy二维数组(或矩阵),我想提取除第i个以外... 查看详情