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

      

  • 相关阅读:
    推荐算法学习资料
    imsdroid 学习(初认识)
    从网易新闻看离线阅读的实现思路
    关于PullToRefreshView bug 的修复
    Android Log日志的封装类,显示类名以及行号,快速定位
    Android Sqlite数据库版本升级管理初探
    《围观啦》发布了!!!!!!!
    单本书阅读,android客户端
    Android P2P语音通话实现(思路探讨)
    HTTP协议基础
  • 原文地址:https://www.cnblogs.com/E-star/p/3440148.html
Copyright © 2011-2022 走看看