------- android培训、java培训、期待与您交流! ----------
Collections
1.Collections:集合框架的工具类。里面定义的都是静态方法。
2.Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。它有两个常用的子接口,List:对元素都有定义索引。有序的。可以重复元素。Set:不可以重复元素,无序。
Collections是集合框架中的一个工具类。该类中的方法都是静态的,提供的方法中有可以对list集合进行排序,二分查找等方法。通常常用的集合都是线程不安全的。因为要提高效率。如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
3.Collections中的一般方法
reverse()反转指定列表中元素的顺序。
replaceAll(List<T> list, T oldVal, T newVal)使用另一个值替换列表中出现的所有某一指定值。
fill()使用指定元素替换指定列表中的所有元素。
shuffle(List<?> list, Random rnd)使用指定的随机源对指定列表进行置换。
sort()对指定列表进行排序。
binarySerch()使用二分搜索法搜索指定列表,以获得指定对象。
4.Collection接口中的toArray()(集合变数组)
5.指定类型的数组到底要定义多长。
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
Arrays
1. 用于操作数组的工具类。里面都是静态方法。
2. asList将数组转成List集合的好处:可以使用集合的思想和方法来操作数组中的元素。
注意:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定。如果你增删。那么会反生UnsupportedOperationException
3.如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
4.toArray集合变数组。
高级for循环
1.Collection在JDk1.5后出现的父类接口Iterable就是提供了这个for语句。
2.格式:for(数据类型变量名:数据或集合){执行语句;}
3.对集合进行遍历。
(1)高级for循环只能获取集合元素。但是不能对集合进行操作。
(2)迭代器除了遍历,还可以进行remove集合中元素的动作。
(3)如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。
4.传统for和高级for有什么区别呢?
高级for有一个局限性。必须有被遍历的目标。建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。
示例:使用高级for循环对集合进行遍历。
import java.util.HashMap;
import java.util.Set;
class ForEachDemo
{
public staticvoid main(String[] args)
{
HashMap<Integer,String> hm = newHashMap<Integer,String>();
hm.put(1,"a");
hm.put(2,"b");
hm.put(3,"c");
Set<Integer> keySet = hm.keySet();
for(Integer i : keySet)
{
System.out.println(i+"::"+hm.get(i));
}
}
}
可变参数
1. 其实就是上一种数组参数的简写形式。不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。
2.可变参数是JDK1.5版本出现的新特性。
3.格式:返回值类型 函数名(参数类型… 行式参数){执行语句;}
其实接收的是一个数组,可以指定实际参数个数。
3.用到函数的参数上,当要操作的同一个类型元素个数不确定的时候,可用这个方式,这个参数可以接受任意个数的同一类型的数据。
4.在使用时注意:可变参数一定要定义在参数列表最后面。
静态导入
1. 当类名重名时,需要指定具体的包名。当方法重名是,指定具备所属的对象或者类。
2.import static java.lang.System.*;//导入了System类中所有静态成员。
------- android培训、java培训、期待与您交流! ----------