Java

Java Arrays

2019-09-14  本文已影响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]
  • 所以创建一个刚刚好的数组最优。

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

上一篇下一篇

猜你喜欢

热点阅读