Arrays:用于操作数组的工具类。里面都是静态方法。
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]
为什么要将集合变数组?为了限定对元素的操作,不需要进行增删了。
网友评论