• 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
    

      

  • 相关阅读:
    js禁止页面回退,刷新,右键代码
    asp.net网站中的Gridview循环判断数据是否被选中
    Gridview中同时选中并删除多个数据
    asp.net中在后台更换控件图片的代码
    关于gcd的8题
    flash AIR 通过BitmapData生成图片到android Camera相册
    flash AIR 通过BitmapData生成图片到本地
    C的随机数
    xcode svn设置事项
    拒绝session丢失 利用DIV层实现对模态窗口的模拟
  • 原文地址:https://www.cnblogs.com/E-star/p/3440148.html
Copyright © 2020-2023  润新知