Проверять из указанного c диапазона массива - PullRequest
0 голосов
/ 12 июля 2020

У меня есть массив String:

String [] s = {"one", "two", "three", "four"};

Теперь я хочу проверить из первых трех элементов этого массива и не хотите, чтобы проверка включала четвертый элемент. Я использую следующий код для проверки:

boolean b = Arrays.asList (s) .contains ("two");

Интересно, есть ли решение для этого!

Ответы [ 3 ]

1 голос
/ 12 июля 2020

Как насчет

String[] newArray=new String[3];
//Copy the first three elements into newArray
System.arraycopy(s,0,newArray,0,3);
0 голосов
/ 12 июля 2020

Создайте подсписок List

Если вы используете List, например ArrayList, а не простой массив, вы можете создать подсписок , который основан на оригинале, но скрывает нежелательные элементы.

Сделайте List из вашего массива.

List < String > allStrings = new ArrayList<>( Arrays.asList( array ) ) ;

Of, если вам нужен немодифицируемый список, используйте List.of.

List < String > allStrings = List.of( array ) ; 

Получите свой подсписок, позвонив по номеру List::subList. Мы должны использовать надоедливый подсчет индекса с нуля. Первое число - это начало включительно. Второе число - это исключительно конец. Таким образом, получение элементов 1, 2 и 3, но не 4 и более, переводится как ( 0 , 3 ). У меня может возникнуть соблазн написать это как ( 1 - 1 , 4 - 1 ), что означает «порядковый номер, включая четыре исключающих, вычитая один для подсчета индекса».

List< String > firstThreeStrings = allStrings.subList( 0 , 3 ) ;  // Using annoying zero-based index counting. First number is inclusive while the second is exclusive.

Имейте в виду, что любые изменения в исходном List будут видны через в подсписок. Мы не создали копию, у нас есть второе представление содержимого первого списка, скрывающее нежелательные элементы.

0 голосов
/ 12 июля 2020

Немного подумав, я нашел решение без необходимости создания нового массива:

 int INSPECTION_LENGTH=3;
String query="two";

public static boolean b(String[] s,int length,String query){
for(int i=0;i<length;i++){
if(s[i].equals(query)){
return true;
}
}

return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...