java提高(4)---数组增删 list删除 map删除

数组增删 集合删除

 

一、数组增删

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();
            }
        }
    }
}

 

 大家看下哪里不对,或者需要补充的,欢迎指点。

 

posted on 2017-11-23 19:51  雨点的名字  阅读(2066)  评论(0编辑  收藏  举报