List的三个子类
ArrayList类:该类也是实现了List的接口。
public class test {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");
//使用foreach遍历List
for (String str : list) { //也可以改写for(int i=0;i<list.size();i++)这种形式
System.out.println(str);
}
//使用迭代器进行相关遍历
Iterator<String> ite=list.iterator();
while(ite.hasNext())//判断下一个元素之后有值
{
System.out.println(ite.next());
}
}
}
Vector类:可以实现可增长的对象数组,是同步的。
特有功能:
public void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加 1
public E elementAt(int index) 返回指定索引处的组件
public Enumeration elements() 返回此向量的组件的枚举
LinkedList类:List 接口的链接列表实现,此实现不是同步的。
特有功能:
public void addFirst(E e) 将指定元素插入此列表的开头
public void addLast(E e) 将指定元素添加到此列表的结尾
public E getFirst() 返回此列表的第一个元素
public E getLast() 返回此列表的第一个元素
public E removeFirst() 移除并返回此列表的第一个元素
public E removeLast() 移除并返回此列表的最后一个元素
泛型:是一种把类型明确的工作推迟到创建对象,或者调用方法的时候才去明确的特殊的类型。(泛型只在编译期有效 但在运行期就擦除了)
格式:
public class 类名<泛型类型1,…>
public interface 接口名<泛型类型>
泛型类型必须是引用类型
优点:
1、把运行时期的问题提前到了编译期间
2、避免了强制类型转换
3、优化了程序设计,解决了黄色警告线
例:
public class Box<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
Box<String> stringBox = new Box<String>();
integerBox.add(new Integer(10));
stringBox.add(new String("小白"));
System.out.printf(integerBox.get());
System.out.printf( stringBox.get());
}
}
泛型通配符:
1、泛型通配符<?>: 任意类型,如果没有明确,那么就是Object以及任意的Java类
2、? extends E: 向下限定,E及其子类
3、? super E: 向上限定,E及其父类
增强for循环:简化数组和Collection集合的遍历。
格式:
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
}
例:
public class test {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("a");
list.add("bb");
list.add("ccc");
for (String s : list) {
System.out.println(s);
}
}
}
可变参数:定义方法的时候不知道该定义多少个参数。
格式:
修饰符 返回值类型 方法名(数据类型… 变量名){}
注意事项:
1、这里的变量其实是一个数组;
2、如果一个方法有可变参数,并且有多个参数,那么可变参数肯定是最后一个。