一1、List类
(1)ArrayList是List接口中常用的一个子实现类
遍历功能:
1)一个是Collection的iterator()
2)size()和get(int index)普通for循环
掌握:存储字符串并遍历元素、存储自定义对象并遍历元素
例1:用ArrayList模拟栈的先进后出
例2:去除重复元素(建立新集合;不建立新集合)
(2)LinkedList集合的特点:
底层是一种链表实现,查询慢,增删快
线程不安全的,不同步,执行效率高
特有功能:
添加功能
addFirst(Object e):将指定的元素插入到列表的开头
addLast(object e):将指定的元素添加到列表末尾
获取功能:
getFirst():获取列表第一个元素
getLast():获取列表第二个元素
删除功能
public Object removeFirst()移除并返回此列表的第一个元素。
public Object removeLast() //返回移除的第一个或者最后一个元素
2、Vector集合
底层是一种可增长对象数组,查询快,增删慢
线程安全,同步,执行效率低
特有功能:
public void addElement(Object obj)------->add(Object obj)
public Enumeration elements():返回此向量的枚举--->相当于:public Iterator iterator()
boolean hasMoreElements() --->boolean hasNext() ;
Object nextElement() --->Object next() ;
代码如下:
//创建集合对象
Vector v = new Vector() ;
//添加元素
v.addElement("hello");
v.addElement("world");
v.addElement("java");
//遍历
//获取Enumeration :向量的枚举
Enumeration en = v.elements() ;
while(en.hasMoreElements()) {
String s = (String)en.nextElement() ;
System.out.println(s);
二1、泛型(Generic)--->引用类型
泛型:将明确的集合类型的工作推迟到了创建对象或者调用方法的时候,属于一种参数化类型,可以作为参数传递.
泛型的好处:
1)将运行时期异常提前到了编译时期
2)优化了设计,解决了黄色警告线问题
3)避免了强制类型转换
泛型的引出可以提供程序的安全性!
泛型可用在接口中,类中,方法上,在集合中应用最多!
l 把泛型定义在类上,提高程序安全性解决了向下类型转换出现的问题:ClassCastException
l 泛型通配符:泛型高级(通配符)
<?> :代表任意类型Object类型,或者任意的Java类
<? extends E>:向下限定,E的子类或者E这个类型
<? super E>:向上限定,E及其他的父类
2、Jdk5以后的新特性:
增强for,静态导入,可变参数,泛型,自动拆装箱...
(1)增强for循环的格式
for(数据大类型 变量名 : 数组或者集合对象名){
输出变量即可!
}
增强for的出现时替代迭代器的,所以在遍历集合或者遍历数组就可以使用增强for去完成
增强for循环的弊端:如果集合的对象是null,如果再次对集合操作,就会出现异常
对集合进行判断,非空判断解决
(2)静态导入:Jdk5一个新特性
特点:(1)前提是该方法必须是静态的
(2)导入到的一个方法的级别
静态导入的格式:import static 包名.类名.方法名;
import static java.util.ArrayList.add; 方法必须是静态方法
常用类中哪个类中静态方法最多:Math
之前导包:java.util.Scanner; 导入到类的级别
(3)可变参数:当一个方法的参数个数不确定的时候,要使用可变参数
格式:修饰符 返回值类型 方法名(数据类型...变量名){...}
注意:(1)变量名:看成一个数组
(2)使用的时候数据类型...
注意:根据具体的需求去完成,一般情况,知道有这个特性就可以了
public static <T> List<T> asList(T... a) :将数组转换成固定大小的集合
ArrayList集合存储自定义对象并遍历,有几种方式?
* Iterator iterator() ;
* listIterator listiterator();(可以不写)
* 普通for循环:size()/get(int index)
* 增强for循环