zoukankan      html  css  js  c++  java
  • 第20章 集合框架(4)-常用集合工具类

    集合框架(4)-常用集合工具类

    1.Arrays类

    在collection接口中有一个方法叫做:toArray,把集合转化为object数组
    把集合转化为数组:Object arr = 集合对象.toArray();
    数组也可以转化为集合(List集合):
    public static<T>List<T>asList(T……a)等价于
    public static<T>List<T>asList(T[] a)
    示例:

    public class TestArrays {
    
        public static void main(String[] args) {
            //把数组转化为List对象
            List<String> list = Arrays.asList("A","B","C");
            List<Date> list2 = Arrays.asList(new Date(), new Date());
            //list.remove(0);//此处报错
            System.out.println(list);//[A, B, C]
            System.out.println(list2);//[Sun Nov 27 21:27:56 CST 2016, Sun Nov 27 21:27:56 CST 2016]
        }
    }
    
    
    

    通过Arrays.asList方法得到的List对象的长度是固定的,不能增加,也不能减少,但是可以修改
    原因是asList方法返回的ArrayList对象,不是java.util.ArrayList而是Arrays类中的内部类对象。
    还有一个奇怪的现象,当先定义一个int[]数组后,把这个数组整体带进去转换出来的结果并不是我们想要的,这个是因为基本数据类型的自动装箱造成的。

    public class TestArrays {
    
        public static void main(String[] args) {
            //把数组转化cv为List对象
            String[] arr = {"A","B","C"};
            List<String> list = Arrays.asList(arr);
            //list.remove(0);//此处报错
            System.out.println(list);//[A, B, C]
            
            
            //自动装箱,把1看成Integer对象,此处有四个对象
            List<Integer> list3 = Arrays.asList(1,2,3,4);
            System.out.println(list3);//[1, 2, 3, 4]
    
            
            
            //此处会报错,无法转换
            //定义了一个int类型的数组,此处有一个对象
            int[] arr2 = {1,2,3,4};
            //直接把数组当作是对象。
            List<int[]> list4 = Arrays.asList(arr2);
            System.out.println(list4);//[[I@16f6e28]
        }
    }
    
    

    2.Collections类

    该类封装了Set,List,Map的操作的工具方法
    获取空集对象(没有元素的集合,注意集合不为null)

    public class TestCollections {
        public static void main(String[] args) {
            //创建一个新的空List集合,其他的Set,Map是相同的
            List<Object> list1 = Collections.EMPTY_LIST; //常量方法
            List<Object> list2 = Collections.emptyList(); //方法,创建的是不可变的
            List<Object> list3 = new ArrayList<>();//java7开始,方法
        }
    }
    
    

    常用集合类
    HashSet/ArrayList/HashMap都是线程安全的,在多线程环境下不安全。
    在Collections类中获取线程安全的集合方法
    List list = Collections.syhchronizedList(new ArrayList());
    当要迭代的时候使用synchronized
    synchronized(list){
    //TODO
    }
    其他的也是相同
    Set set = Collections.syhchronizedList(new HashSet());

    Map map = Collections.syhchronizedList(new HashMap());

  • 相关阅读:
    jquery操作select(取值,设置选中)
    js一点代码备用
    正则实现文本框只能输入16个数字,每4位数字后添加一个空格
    js限制文本框只能输入数字方法
    可编程数据平面将OpenFlow扩展至电信级应用(二)
    Android Camera解析(上) 调用系统相机拍摄照片
    结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代
    KMP模板
    网络抓包工具 Fiddler
    STM32F030, 使用嘀嗒定时器Systick实现LED闪烁
  • 原文地址:https://www.cnblogs.com/cenyu/p/6149813.html
Copyright © 2011-2022 走看看