Как проверить сразу несколько переменных?

Вопрос: Можно ли написать блок кода для проверки всех или всех объектов/переменных определенного типа для определенного признака? (Без создания оператора if для каждого) Затем установите его в значение true или false. Как если бы у вас было 3 переменные и... if(a=0||b=0||c=0){ //set any variable equal to zero to 4 } запишите действие, описанное в комментарии

Вопрос:

Можно ли написать блок кода для проверки всех или всех объектов/переменных определенного типа для определенного признака? (Без создания оператора if для каждого)
Затем установите его в значение true или false.

Как если бы у вас было 3 переменные и…

if(a=0||b=0||c=0){ //set any variable equal to zero to 4 }

запишите действие, описанное в комментарии

Или, сложный пример, 4 arraylists типа integer:

List<Integer> even = new ArrayList<Integer>(), //positive even ints odd = new ArrayList<Integer>(), //positive odd ints negaodd = new ArrayList<Integer>() //negative even ints negaeven = new ArrayList<Integer>(); //negative odd ints

Тогда что-то вроде:

if(«AnyArray».isEmpty()){ whatever-array-is-being-tested/tried = null; }

Так что, если какой-либо из массивов окажется пустым, вместо [] они вернут “null”.

Лучший ответ:

Хм, если вы хотите сделать что-то более интересное, а затем просто итерацию по коллекции, она выглядит очень функциональной, как применение фильтра, а затем карты. Попробуйте коллекции lambdaj или google (см. Здесь для хорошей публикации . Ниже приведен пример использования lambdaj из https://code.google.com/p/lambdaj/wiki/LambdajFeatures.

List<Integer> oddNumbers = filter(odd, asList(1, 2, 3, 4, 5));

См. Здесь для получения более потенциальных идей. Каков наилучший способ фильтрации коллекции Java?

Отказ от ответственности Иногда за борт с такого рода вещами (когда простой цикл хватит) обфускирует код больше, чем что-либо еще, поэтому будьте осторожны.

Ответ №1

Вы можете использовать массив или список вместе со вспомогательным методом для достижения обоих.

int[] intArray = { a, b, c }; setZeroes(intArray); public void setZeroes(int[] a) { for (int i = 0; i < a.length; i++) { a[i] = (a[i] == 0) ? a[i] : 4; } }

Обратите внимание, что это не будет устанавливать a, b или c в 0, а скорее элементы в массиве.

Но… возможно, они должны просто быть элементами массива (или List) в любом случае. Это моя догадка.

Вы можете сделать то же самое со списком списков.

List<List<Integer>> listOfLists = new ArrayList<List<Integer>>(); listOfLists.add(listA); listOfLists.add(listB); listOfLists.add(listB); setListsToNull(listArray); public void setListsToNull(List<List<Integer>> a) { for (int i = 0; i < a.length; i++) { List<Integer> thisList = a.get(i); a.set(i, thisList.isEmpty() ? null : thisList); } }

Я обычно использовал бы оператор if вместо ? оператора, но вы не хотели, если бы…

Вы можете легко сделать оба метода универсальными (вам нужно будет использовать объекты для первого примера), но мы оставим это до вас….

Оцените статью
Добавить комментарий