集合框架的工具类:Collections
Arrays:用户操作数组的工具类。里面都是静态方法。
- asList:将数组变成list集合。
- 把数组变成list集合有什么好处?
可以使用集合的思想和方法来操作数组中的元素。
注意:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。contains、get、indexOf()、subList()这些方法可以使用。如果你增删,那么会发生UnsupportedOperationException。
如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
集合变数组:Collection接口中的toArray方法。
- 指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数据长度大于了集合的size,就不会新创建数组,而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。 - 为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
增强for循环--foreach
- 格式:
for(数据类型 变量名 : 被遍历的集合(Collection)或者数组){}
对集合进行遍历。
只能获取集合元素,但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。 - 传统for和高级for有什么区别呢?
高级for有一个局限性,必须有被遍历的目标。
建议在遍历数组的时候,还是希望使用传统for。因为传统for可以定义角标。
可变参数
JDK1.5版本新特性
import java.util.*;
class ChangeCanshu
{
public static void main(String[] args) {
//show(3,4);
/*
虽然少定义了多个方法,但是每次都要定义一个数组,作为实际参数
int[] arr = {3,4};
show(arr);
int[] arr1 = {3,42,2,3};
show(arr1);
*/
/*
可变参数。
其实就是上一中数组参数的简写形式。
不用每一次都手动的建立数组对象。
只要将要操作的元素作为参数传递即可。
隐式将这些参数封装成了数组。
*/
show(2,1,3);
show(1,2,3,4,5);
}
public static void show(int... arr)
{
System.out.println(arr.length());
}
}
方法的可变参数:
在使用时注意:可变参数一定要定义在参数列表最后面。
静态导入--StaticImport
import java.util.*;
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。
class StaticImport
{
public static void main(String[] args) {
int[] arr = {3,5,2};
Arrays.sort(arr);
int index = binarySearch(arr,1);
System.out.println(Arrays.toString(arr));
System.out.println("Index:"+index);
}
}
当类名重名时,需要指定具体的包名。
当方法重名时,需要指定具体所属的对象或者类。
网友评论