1. java.util.Arrays
1.1 输出数组
@Test
public void test() {
String str = ",a,,b,";
String[] strArr = str.split(",");
System.out.println(Arrays.toString(strArr));
}
1.2 Arrays.asList
List<String> list = Arrays.asList("A", "B", "C", "D");
Arrays.asList() 返回的是一个List (List是一个接口,实际返回的是 List 的实现类),这个List在底层是有数组实现的,所以 size 是 fixed 的
public class Arrays {
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable {
private final E[] a;
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
}
}
1.3 add() 会抛异常
@Test
public void test() {
List<String> list = Arrays.asList("A", "B", "C", "D");
// java.lang.UnsupportedOperationException
// at java.util.AbstractList.add(AbstractList.java:148)
list.add("E");
}
原因分析:
Arrays 有一个内部类 ArrayList(非 java.util.ArrayList 类)
继承抽象类 AbstractList,未重写 add(),remove() 等方法
public abstract class AbstractList {
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
}
1.4 添加元素 set()
List<String> list = Arrays.asList("A", "B", "C", "D");
list.set(0, "sss");
2. 数组转List
// 方式一:
List<String> list = Arrays.asList(strArray);
// 方式二:
String[] strArray = new String[] {"A", "B", "C", "D"};
ArrayList<String> copyArrays = new ArrayList<>(Arrays.asList(strArray));
// 方式三:
List<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, strArray);
2.2 toArray()转为数组
public interface List<E> extends Collection<E> {
Object[] toArray();
/**
* String[] y = x.toArray(new String[0]);
*
* toArray(new Object[0]) 等价于 toArray()
*/
<T> T[] toArray(T[] a);
}
toArray(T[] a) 可指定数组元素的类型
3. Arrays.asList() vs new ArrayList(Arrays.asList())
3.1 Arrays.asList()
List<String> list = Arrays.asList("A", "B", "C", "D");
源码分析
public class Arrays {
public static <T> List<T> asList(T... a) {
return new Arrays.ArrayList<>(a);
}
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable {
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a;
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
}
}
3.2 new ArrayList(Arrays.asList())
String[] array = new String[]{"A", "B", "C", "D"};
List<String> stringList = new ArrayList<>(Arrays.asList(array));
4. 其他方法
@Test
public void test() {
int[] arr = new int[]{1, 3, 4, 2};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}









网友评论