从java中的二维数组中获取列

     2023-03-22     156

关键词:

【中文标题】从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个以外... 查看详情