获取2d数组的数组切片

时间:2014-06-27 22:37:06

标签: java arrays

我有一个2d String数组。我该怎么检查一片呢?例如第3行,最多第6个元素

我试过了

  String arr[][] = new String[3][6]
  arr[3][4] = "example"
  if (Arrays.asList(arr).subList(3,6).contains("example"))
            System.out.print("yes");

但这不起作用。它只适用于1d阵列?另外,如何使用contains来检查切片数组中的所有元素是否为空?

4 个答案:

答案 0 :(得分:1)

首先,数组在Java中是零索引的,因此如果您声明具有第一维3的数组,则最大索引为2

其次,如果要查看第三行的切片,则应在转换为列表之前明确指定索引2

import java.util.*;
public class ArrayGame {
    public static void main(String[] args) {
        String arr[][] = new String[3][6];
        arr[2][4] = "example";
        if (Arrays.asList(arr[2]).subList(3,6).contains("example"))
            System.out.println("yes");    
    }
}

输出:

yes

答案 1 :(得分:0)

查看javadoc数组:

Arrays.copyOfRange(T[] original, int from, int to)

,其中

例如,

原文是arr [3]

来自0

到7

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange%28T[],%20int,%20int%29

答案 2 :(得分:0)

目前的做法是:

if (Arrays.asList(arr[3]).contains("example"))
        System.out.print("yes");
祝你好运!

答案 3 :(得分:0)

您声明String arr[][] = new String[3][6],这意味着只有3行6列结构。

可以指定值,在本例中为行

  • arr[0][...] = <assigned-value> //第1行
  • arr[1][...] = <assigned-value> //第2行
  • arr[2][...] = <assigned-value> //第3行

但它不会按预期工作

  • arr[3][4] = "example" //第4行,此处投掷ArrayIndexOutOfBoundsException