zoukankan      html  css  js  c++  java
  • 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();
                }
            }
        }
    }

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

  • 相关阅读:
    QT获取句柄
    java多线程关键字volatile、lock、synchronized
    Java几种常见的设计模式
    将博客搬至CSDN
    0228-0308的笔记
    深入理解es6-Promise对象
    彻底理解正则
    es6学习笔记-class之继承
    es6学习笔记-class之一概念
    arguments对象详解
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/7886607.html
Copyright © 2011-2022 走看看