Вопрос:
Можно ли написать блок кода для проверки всех или всех объектов/переменных определенного типа для определенного признака? (Без создания оператора 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 вместо ? оператора, но вы не хотели, если бы…
Вы можете легко сделать оба метода универсальными (вам нужно будет использовать объекты для первого примера), но мы оставим это до вас….