• Java中关于Arrays.asList()的操作


    我们可以通过Arrays.asList() 产生一个List,但是要记住,我们通过Arrays.asList产生的list是基于一个固定大小的数组的, 仅支持那些不会改变数组大小的操作。所以我们在使用时要时刻记住,以免出现不可预料的错误。

    如果我们想要得到一个可以操作的List可以通过将Arrays.asList获得的list作为构造器的参数传进ArrayList中,或者通过使用addAll方法添加进去,即可。

    示例:

    import java.util.AbstractList;
    import java.util.AbstractMap;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    
    
    public class Test{
    
    	public static void test(String msg, List<String> list){
    		Collection<String> c = list;
    		Collection<String> sublist = list.subList(1, 3);
    		Collection<String> c2 = new ArrayList<String>(sublist);
    		System.out.println("------" + msg + "--------");
    		try{ 
    			c.removeAll(c2);
    		}catch(Exception e) {
    			System.out.println("removeAll : " + e);
    		}
    		try{ 
    			c.retainAll(c2);
    		}catch(Exception e) {
    			System.out.println("retainAll : " + e);
    		}
    		try{ 
    			c.clear();
    		}catch(Exception e) {
    			System.out.println("clear : " + e);
    		}
    		try{ 
    			c.add("XXX");
    		}catch(Exception e) {
    			System.out.println("add : " + e);
    		}
    		try{ 
    			c.addAll(c2);
    		}catch(Exception e) {
    			System.out.println("addAll : " + e);
    		}
    		try{ 
    			c.remove("X");
    		}catch(Exception e) {
    			System.out.println("remove : " + e);
    		}
    		
    		try{ 
    			list.set(0, "XYZ");
    		}catch(Exception e) {
    			System.out.println("list.set : " + e);
    		}
    	}
    	public static void main(String[] args) {
    		List<String> list = Arrays.asList("A B C D E F G H B I HIK HKI GG".split(" "));
    		test("Modifiable1", new ArrayList<String>(list));
    		
    		List<String> list2 = new ArrayList<String>();
    		list2.addAll(list);
    		test("Modifiable2", list2);
    		
    		Collections.addAll(list2, "A B C D E F G H B I HIK HKI GG".split(" "));
    		test("Modifiable3", list2);
    		
    		test("Arrays.asList", list);
    		test("unmodifiableList()", Collections.unmodifiableList(list));
    	}
    
    }
    输出:
    ------Modifiable1--------
    ------Modifiable2--------
    ------Modifiable3--------
    ------Arrays.asList--------
    removeAll : java.lang.UnsupportedOperationException
    retainAll : java.lang.UnsupportedOperationException
    clear : java.lang.UnsupportedOperationException
    add : java.lang.UnsupportedOperationException
    addAll : java.lang.UnsupportedOperationException
    ------unmodifiableList()--------
    removeAll : java.lang.UnsupportedOperationException
    retainAll : java.lang.UnsupportedOperationException
    clear : java.lang.UnsupportedOperationException
    add : java.lang.UnsupportedOperationException
    addAll : java.lang.UnsupportedOperationException
    remove : java.lang.UnsupportedOperationException
    list.set : java.lang.UnsupportedOperationException
    

      

  • 相关阅读:
    极域电子教室 e-Learning Class V4 2010专业版 学生机 卸载方法
    浅谈IT员工管理
    apacheserver下载、安装、配置
    Android BLE开发之Android手机搜索iBeacon基站
    Qt编程18:Qt调色板QPalette的使用
    二叉树的操作
    Android应用开发多语言drawable目录
    Mybatis文档阅读笔记(明日继续更新...)
    《Spark快速大数据分析》—— 第六章 Spark编程进阶
    Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统
  • 原文地址:https://www.cnblogs.com/E-star/p/3440148.html
Copyright © 2020-2023  润新知