Java Arrays

作者: 一亩三分甜 | 来源:发表于2019-09-14 23:35 被阅读0次

    Arrays:用于操作数组的工具类。里面都是静态方法。

    • asList:将数组变成list集合。
    import java.util.Arrays;
    
    public class ArraysDemo {
        public static void main(String[] args) {
            int[] arr = {2,4,5};
            System.out.println(Arrays.toString(arr));
        }
    }
    //输出
    [2, 4, 5]
    

    把数组变成list集合有什么好处?可以使用集合的思想和方法来操作数组中的元素。注意:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。contains,get,indexOf(),subList();如果你增删,那么会发生UnsupportedOperationException异常。

    import java.util.Arrays;
    import java.util.List;
    
    public class ArraysDemo {
        public static void main(String[] args) {
    //        int[] arr = {2,4,5};
    //        System.out.println(Arrays.toString(arr));
            String[] arr = {"abc","cc","kkkk"};
            List<String> list = Arrays.asList(arr);
            sop("contains:"+list.contains("cc"));
            list.add("qq");
            sop(list);
        }
        public static boolean myContains(String[] arr,String key)
        {
            for (int x=0;x<arr.length;x++)
            {
                if (arr[x].equals(key))
                    return true;
            }
            return false;
        }
        public static void sop(Object obj)
        {
            System.out.println(obj);
        }
    }
    //输出
    contains:true
    Exception in thread "main" java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:148)
        at java.util.AbstractList.add(AbstractList.java:108)
        at ArraysDemo.main(ArraysDemo.java:11)
    

    如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。

    import java.util.Arrays;
    import java.util.List;
    import java.util.ListIterator;
    
    public class ArraysDemo {
        public static void main(String[] args) {
    //        int[] arr = {2,4,5};
    //        System.out.println(Arrays.toString(arr));
            String[] arr = {"abc","cc","kkkk"};
            List<String> list = Arrays.asList(arr);
            sop("contains:"+list.contains("cc"));
    //        list.add("qq");//UnsupportedOperationException
    //        sop(list);
            int[] nums = {2,4,5};
            List<int[]> li = Arrays.asList(nums);
            sop(li);
        }
        public static boolean myContains(String[] arr,String key)
        {
            for (int x=0;x<arr.length;x++)
            {
                if (arr[x].equals(key))
                    return true;
            }
            return false;
        }
        public static void sop(Object obj)
        {
            System.out.println(obj);
        }
    }
    //输出
    contains:true
    [[I@61bbe9ba]
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.ListIterator;
    
    public class ArraysDemo {
        public static void main(String[] args) {
            Integer[] nums = {2,4,5};
            List<Integer> li = Arrays.asList(nums);
            sop(li);
        }
        public static void sop(Object obj)
        {
            System.out.println(obj);
        }
    }
    //输出
    contains:true
    [2, 4, 5]
    

    集合变数组:Collection接口中的toArray方法。

    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class CollectionToArrayDemo {
        public static void main(String[] args) {
            ArrayList<String> al = new ArrayList<String>();
            al.add("abc1");
            al.add("abc2");
            al.add("abc3");
    
            String[] arr = al.toArray(new String[al.size()]);
            System.out.println(Arrays.toString(arr));
        }
    }
    //输出
    [abc1, abc2, abc3]
    

    指定类型的数组到底要定义多长呢?

    • 当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class CollectionToArrayDemo {
        public static void main(String[] args) {
            ArrayList<String> al = new ArrayList<String>();
            al.add("abc1");
            al.add("abc2");
            al.add("abc3");
    
            String[] arr = al.toArray(new String[1]);
            System.out.println(Arrays.toString(arr));
        }
    }
    //输出
    [abc1, abc2, abc3]
    
    • 当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class CollectionToArrayDemo {
        public static void main(String[] args) {
            ArrayList<String> al = new ArrayList<String>();
            al.add("abc1");
            al.add("abc2");
            al.add("abc3");
    
            String[] arr = al.toArray(new String[5]);
            System.out.println(Arrays.toString(arr));
        }
    }
    //输出
    [abc1, abc2, abc3, null, null]
    
    • 所以创建一个刚刚好的数组最优。

    为什么要将集合变数组?为了限定对元素的操作,不需要进行增删了。

    相关文章

      网友评论

        本文标题:Java Arrays

        本文链接:https://www.haomeiwen.com/subject/rdhzyctx.html