java Collection集合刪除某一元素方法彙總
阿新 • • 發佈:2019-01-01
無論在自己寫程式玩還是實際專案應用中,操作java.util.Collection結合都是最常用的,而且也是最重要的知識點。從集合中刪除某一元素同樣是很常用的操作。對了,面試中也總考察,面試官說要考察你的實際程式設計的能力,誰知道呢。下面總結了從集合中刪除某一元素的幾種方法
package test; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.function.Predicate; public class T { public static void main(String[] args) { //對於list新增資料,也有幾種方法,效能不同,有興趣可以自己詳細瞭解 List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5)); //List<Integer> list = new ArrayList<>(); //Collections.addAll(list,1,2,3,4,5); remove(list, 3); print(list); } public static void print(List<Integer> list) { /*for (Integer i : list) { System.out.println(i); }*/ /** * 利用java8新特性列印集合資訊 */ list.stream().forEach(System.out::println); } /** * 刪除集合某一元素的方法彙總 * @param list * @param toRemoveValue * @return */ public static List<Integer> remove(List<Integer> list, int toRemoveValue) { /** * 方法1,利用java.util.Iterator刪除某一個元素 */ for (Iterator<Integer> iterator=list.iterator();iterator.hasNext();) { int value = iterator.next(); if(value == toRemoveValue) { iterator.remove(); } } //---------------------------------------------------------------------------- /** * 方法2,利用操作集合索引刪除某一個元素 */ for (int i = 0; i < list.size(); i++) { int value = list.get(i); if(value == toRemoveValue) { list.remove(i); i--; } } //---------------------------------------------------------------------------- /** * 方法3,利用反向遍歷集合刪除某一個元素 */ for (int i = list.size() - 1;i > 0; i--) { int value = list.get(i); if(value == toRemoveValue) { list.remove(i); } } //---------------------------------------------------------------------------- /** * 方法4,利用增加一個新集合刪除某一個元素 */ List<Integer> toRemoveList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { int value = list.get(i); if(value == toRemoveValue) { toRemoveList.add(value); } } list.removeAll(toRemoveList); //---------------------------------------------------------------------------- /** * 方法5,利用break取巧刪除某一個元素,實際應用不常用 */ for (int i = 0; i < list.size(); i++) { int value = list.get(i); if(value == toRemoveValue) { list.remove(i); break; } } //---------------------------------------------------------------------------- /** * 方法6,利用java8新特性刪除某一個元素 */ list.removeIf(value -> value==toRemoveValue); //---------------------------------------------------------------------------- /** * 方法7,利用java8新特性的forEach()方法刪除某一個元素,其實不是刪除,是過濾 */ list.stream().filter(value -> value!=toRemoveValue).forEach(System.out::println); //---------------------------------------------------------------------------- /** * 方法8,利用java8新特性的forEach()方法刪除某一個元素,其實不是刪除,是過濾,等同上一種寫法 */ list.stream().forEach(value -> { if(value!=toRemoveValue) System.out.println(value);}); return list; } }