随笔 - 416  文章 - 0  评论 - 842  阅读 - 273万

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   雨点的名字  阅读(2069)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

点击右上角即可分享
微信分享提示

目录导航