ArrayList根据指定条件移除元素和去重(java)

来源:互联网 发布:知乎app电脑版 编辑:程序博客网 时间:2024/04/29 22:22

代码和思路

/** * ArrayList根据指定条件移除元素 * ArrayList移除重复元素 */package com.oj.oppo;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.List;/** * @author Xlfx * */public class ArrayList_Remove {/** * @param args */public static void main(String[] args) {ArrayList<Integer> myList = new ArrayList<>();initList(myList);printList(myList);// *********************************************************************// 使用HashSet删除ArrayList中重复的元素// myList = new ArrayList<Integer>(new HashSet<Integer>(myList));// HashSet<Integer> mySet = new HashSet<>();// for (int i = 0; i < myList.size(); i++) {// mySet.add(myList.get(i));// }// myList = new ArrayList<>(mySet);// *********************************************************************// 使用LinkedHashSet删除ArrayList中重复的元素// LinkedHashSet不允许重复元素,同时保持元素的插入顺序。// LinkedHashSet的这两个属性可以确保在删除ArrayList中的重复元素之后,// 依然保持元素的插入顺序myList = new ArrayList<Integer>(new LinkedHashSet<Integer>(myList));// LinkedHashSet<Integer> myLHSet = new LinkedHashSet<>();// for (int i = 0; i < myList.size(); i++) {// myLHSet.add(myList.get(i));// }// myList = new ArrayList<>(myLHSet);// *********************************************************************System.out.println("删除重复元素后: ");printList(myList);// 删除小于5的元素Remove_elements4(myList);System.out.println("删除小于5的元素: ");printList(myList);}public static void Remove_elements1(ArrayList<Integer> arraylist) {// 顺序删除,但是对下标和索引进行了处理int size = arraylist.size();for (int i = 0; i < size; i++) {if (arraylist.get(i) < 5) {arraylist.remove(i);size--;i--;}}// for (int i = 0, len = arraylist.size(); i < len; i++) {// if (arraylist.get(i) < 5) {// arraylist.remove(i);// len--;// i--;// }// }}public static void Remove_elements2(ArrayList<Integer> arraylist) {// 倒序删除,以防因为删除中间项导致数据下标变更,使得数据出错Iterator<Integer> listIterator = arraylist.iterator();while (listIterator.hasNext()) {Integer integer = listIterator.next();if (integer < 5) {listIterator.remove();}}}public static void Remove_elements3(ArrayList<Integer> arraylist) {// 使用iterator,这个是java和Android源码中经常使用到的一种方法,所以最为推荐for (int i = arraylist.size() - 1; i >= 0; i--) {if (arraylist.get(i) < 5) {arraylist.remove(i);}}}public static void Remove_elements4(ArrayList<Integer> arraylist) {// 使用辅助数据结构ArrayList<Integer> temp = new ArrayList<>();for (Integer integer : arraylist) {if (integer < 5) {temp.add(integer);}}arraylist.removeAll(temp);}public static void initList(List<Integer> list) {list.add(1);list.add(2);list.add(4);list.add(4);list.add(6);list.add(6);list.add(7);list.add(8);list.add(9);}public static void printList(List<Integer> list) {for (Integer integer : list) {System.out.println(integer);}}}


输出

//1//2//4//4//6//6//7//8//9//删除重复元素后: //1//2//4//4//6//6//7//8//9//删除小于5的元素: //6//6//7//8//9


0 0
原创粉丝点击