#java #arrays
#java #массивы
Вопрос:
У меня есть 2d-массив строк. Как я могу проверить его фрагмент? Например, строка 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 как можно проверить, все ли элементы являются нулевыми в массиве фрагментов?
Комментарии:
1. уточните, пожалуйста, неясно, о чем вы спрашиваете
2. ну, я хочу получить только фрагмент 2d-массива arr [3] [6] и проверить, содержит ли он «пример», не перебирая весь массив
3. вы можете просто получить значение, сохраненное в
array[3][6]
, что вы имеете в виду, если нарезать дальше?4. @user3758223, похоже, вы пытаетесь получить всю строку из
arr[3]
?5. Что вы считаете фрагментом многомерного массива?
Ответ №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
Ответ №2:
Посмотрите в массивах javadoc:
Arrays.copyOfRange(T[] original, int from, int to)
где
например, исходное значение arr[3]
from равно 0
to равно 7
http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange(T [], int, int)
Комментарии:
1. Но это скопировало бы весь массив и заняло бы память, что плохо, поскольку мне придется выполнять эти проверки в определенных фрагментах массива много раз.
Ответ №3:
Текущий способ сделать это просто :
if (Arrays.asList(arr[3]).contains("example"))
System.out.print("yes");
Удачи!
Ответ №4:
Вы заявляете, что String arr[][] = new String[3][6]
это означает просто структуру из 3 строк и 6 столбцов.
Можно присвоить значение, в данном случае строку,
arr[0][...] = <assigned-value>
// строка 1arr[1][...] = <assigned-value>
// строка 2arr[2][...] = <assigned-value>
// строка 3
Но это не будет работать так, как вы ожидали
arr[3][4] = "example"
// строка 4, здесь выбрасываетсяArrayIndexOutOfBoundsException