----------------------
java为使用者提供了操作集合与数组的工具类分别为Collections是集合对象的工具类,提供了操作集合的工具方法和Arrays是数组的工具类,提供了对数组的工具方法
这两个工具类的特点是类中的方法都是静态的,不需要创建对象,直接使用类名调用即可。
Collection与Collections的区别:
Collection:是集合框架的一个顶层接口,它的内部定义的是单列集合的共性方法,它有两个子接口
Set: 是一个不能存储重复元素的集合。
List:对元素都有索引,是一个有序的可重复的集合。
Collections:是集合框架的工具类,它的内部定义的都是静态的方法。可以对List集合进行操作如排序,二分查找等,还可以使用该工具类将多线程中不安全的集合变成线程安全的集合。
Collections中的方法:
sort(List <T> list):根据元素的自然顺序对指定列表按升序进行排序
sort(List <T> list, Comparator<?super T> c):根据指定的比较器排序
shuffle(List<?> list):
对指定列表随机置换
reverse(List<?> list):
反转指定列表中元素的顺序。
fill(List<? super T> list,T obj): 使用指定元素替换指定列表中的所有元素
Collections中二分查找的原理:
集合变数组:
Collection接口中的toArray方法,将集合变成数组的原因:为了限定对元素的操作,不需要对元素进行增删操作。
import java.util.*;
class CollectionToArray
{
public static void main(String[]args)
{
ArrayList<String>al = new ArrayList<String>();
al.add("1231");
al.add("32c2");
al.add("a1c3");
String[] arr= al.toArray(new String[al.size()]);
System.out.println(Arrays.toString(arr));
}
}注意:当指定类型的数组长度小于集合的size,则内部会创建一个新的数组,长度为集合的size;
当指定类型的数组长度大于集合的size,则不会创建新的数组而使用传递进来的数组。
Arrays工具类:用于操作数组的工具类。
将数组变成List集合的方式:asList()方法
将数组变成集合的好处:可以使用集合的思想和方法来操作数组中的元素。
public class ArraysTolist{
public static void main(String[]args)
{
String[] string={"zxcv","asdf","qwer"};
List<String>list=Arrays.asList(string);
System.out.println(list);
}
}
注意:将数组变成集合后,由于数组长度是固定的,所以不可以使用集合的增删方法,但可以使用集合的其他方法。
如果数组中的元素都是对象,变成集合时数组中的元素就直接转换成集合中的元素
如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素存在。
JDK1.5的新特性:
1.增强for循环
能对集合进行遍历,且能获取集合的元素,但是不能对集合进行操作。
格式:
for(数据类型 变量名 : 被遍历的集合(Collection)或者数组)
{
}
增强for循环与传统for循环的区别:
增强for循环在使用时必须具有被遍历的目标。
建议在遍历数组的时候,还是希望是用传统for,因为传统for可以定义脚标
2.可变参数
public class ParamDemo
{
public static void main(String[]args) {
method("hello", 1,2,3,6);
method("12",4,5,6,6);//传入的数据可变
}
public static void method(String s,int...array/*可变参数*/)
{
}
}
注意:定义时可变参数要定义在参数列表的最后。
3.静态导入
import java.xx.*;
导入的是xx包中的所有类
import static java.xx.yy.*;
导入的是xx包中yy类中的所有静态成员。
静态导入的好处是,简化了代码的书写。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------