数组增删 集合删除
一、数组增删
package com.test; import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class ArrayBlock { /* 去掉数组中重复的值 */ public static void testA() { String [] str = {"cat", "dog", "pig", "dog",}; // 先把数组转为集合 List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } /* toArray(T[] a)用法 * 因为list集合默认是object类型,那传入new String[2],首先有泛型作用 * 如果list长度大于2,那new String[2]只有泛型作用,如果长度等于2 * 那就用new String[2]这个数组,如果小于2, 那数组多余部分为null */ String[] newStr = list.toArray(new String[1]); } //删除数组中其中一个元素 public static void testB() { String [] str = {"cat", "dog", "pig", "dog",}; //删除pig List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { list.add(str[i]); } //list移除记得放外面 list.remove(2); //返回一个包含所有对象的指定类型的数组 String[] newStr = list.toArray(new String[1]); } //在数组中增加一个元素 public static void testC() { String [] str = {"cat", "dog", "pig", "dog",}; //增加pee List<String> list = new ArrayList<String>(); for (int i=0; i<str.length; i++) { list.add(str[i]); } // list.add()默认在集合最后插入数据,而 add(2, "pee")就指定在索引第二个位置插入 list.add(2, "pee"); String[] newStr = list.toArray(new String[1]); } }
二、集合删除数据
package com.test; import java.util.List; import java.util.ArrayList; import java.util.Iterator; public class ListBlock { public void deliect() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); //方法一: 用for增强方法删除 for (String str : list) { if (str.equals("a")) /* 在使用增强for循环的过程不能对元素进行删除、修改、增加的操作等操作。 * 但是,如果操作一下,立刻break跳出,也是不会报错的! */ list.remove(str); } //方法二:使用传统for循环遍历 for (int i = 0; i < list.size(); i++) { String str = list.get(i); if (str.equals("a")) { /* 不会报错,但会少都一条信息, 因为执行删除操作;删除完成,则集合后边的元素会自动前移, * 导致下次遍历漏掉一个元素,所以少删后面那个元素。 * 解决方法:在remove();方法下写上 --i; */ list.remove(i); } } //方法三:使用api提供的方法list.iterator(),这个方法不会出现问题 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String str = iterator.next(); if (str.equals("a")) { iterator.remove(); } } } }
三、map集合删除数据
package com.test; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; public class ListBlock { public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); map.put("1", "one"); map.put("2", "two"); map.put("3", "three"); map.put("4", "four"); // 删除元素 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); String key = entry.getKey(); int k = Integer.parseInt(key); if (k % 2 == 1) { /*iterator的remove()方法,也有需要我们注意的地方: * 每调用一次iterator.next()方法,只能调用一次remove()方法。 * 调用remove()方法前,必须调用过一次next()方法。 */ it.remove(); } } } }
大家看下哪里不对,或者需要补充的,欢迎指点。