Я помню, что во время моего предыдущего поиска работы я столкнулся с интервьюером, который задал мне очень простой вопрос. Вопрос в том, что в списке есть 10 элементов, и я хочу удалить из него 3 элемента. Как мне это сделать? Я не думал об этом в то время, поэтому я просто сказал, что у списка есть свой собственный метод удаления, который можно использовать напрямую. Он сказал, пожалуйста, объясните это подробно. Я сказал, что хотел бы написать цикл, количество петлей - это длина списка, а затем напрямую удалить элементы, которые вы хотите удалить в цикле.
В то время я подумал и задал такой простой вопрос. Интервьюер сказал: «Вы можете попробовать самостоятельно, когда вернетесь. Посмотрите, сообщите ли вы сообщите об ошибке, если пишете, как вы сказали. Тогда я был запутан. Хотя это был простой вопрос, я никогда не обращал внимания на эту небольшую деталь в ежедневном кодировании, и можно представить результаты интервью.
После того, как я вернулся, я попробовал это один раз, и это действительно сообщило об ошибке. Оказалось, что операция списка не была изменена во время обхода, будь то удален или добавлена, потому что если бы новые элементы были добавлены в коллекцию во время обхода, это вызвало бы мертвую петлю. Кроме того, если бы элементы были удалены во время обхода, это вызвало бы такие проблемы, как пересечение границ следующей таблицы в обходе. Общий метод работы - это функция, реализованная с помощью метода Addall и метода Removeall.
Например, следующее
@Testpublic void mytestlearnmore () {list <string> testlist = new ArrayList <> (); testlist.add ("1 ян"); testlist.add ("1 li"); testlist.add ("1 wang"); testlist.add ("1 Zhang"); testlist.add ("2 yang"); testlist.add ("2 солнце"); testlist.add ("2 Zhao"); Список <string> temaddlist = new ArrayList <> (); для (строковый тест: testlist) {if (test.startswith ("1")) {temaddlist.add (test); }} testlist.removeall (temaddlist); System.out.println (json.tojsonstring (testlist));}Результат печати: [«2 ян», «2 Солнца», «2 Чжао»]
Это реальный способ работы. Тем не менее, я хочу поговорить сегодня, так это новый метод сбора Java 8. Таким образом, вам нужно написать пять или шесть строк кода, и вы можете сделать это с одной строкой кода в Java 8. Это следующая строка кода:
testlist.removeif (test-> test.startswith ("1"));Значение этого кода состоит в том, чтобы удалить элементы, которые соответствуют формату параметров removeiF, поэтому, если вы печатаете список испытаний после этой строки кода, вы не будете распечатывать элементы, начиная с 1.
Эти мелкие детали фактически накапливаются в процессе ежедневного кодирования. Если есть слишком много подводных камней, вы будете обращать на это внимание при написании этого позже. Как и при использовании равных в Java, вы всегда ставите известные константы перед равными, чтобы предотвратить исключения из нулевого указателя. При использовании Lambda Expressions для коллекций вы должны сначала судить, является ли коллекция нулевой через Objects.nonnull (). При печати объектов не назовите метод объекта ToString (). Вы должны передавать метод объектов объекта объекта, чтобы даже если объект был нулевым, вы можете распечатать его. Класс объектов - это новый класс инструментов, добавленный в Java7.
Суммировать
Выше приведено недавно добавленный метод Java8 в коллекции, представленной редактором для удаления. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение. Редактор ответит всем вовремя!