一.泛型
标识集合中保存元素的类型通常写成ArrayList<类型> list = new ArrayList();
使用泛型的好处
1.操作数据时更加安全(规范集合中能保存的数据)
2.可以避免向下转型(强转)的麻烦
3.将运行时错误 转到编译时报错
二.运用泛型遍历集合
ListIterator<String> listIterator = list.listIterator();
正向遍历
while(listIterator.hasNext()) {
//获取结合中的元素
String next = listIterator.next();
System.out.println(next);
}
逆向遍历
//逆向遍历
while(listIterator.hasPrevious()) {
String previous = listIterator.previous();
System.out.println(previous);
}
根据迭代器的原理,需要先正向遍历才能实现逆向遍历。
三.泛型的另一种形式
泛型<?extends E>
问号是子类 E是父类
只能使用 父类的子类 或本类
也叫向下限定
四.循环删除
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
ArrayList<String> newlist = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("b")) {
//是b就删了
//删除后要退回角标
list.remove(i--);
}
}
System.out.println(list);
五.Collections中的swap方法
用于交换集合中两个元素的位置ArrayList<Student> list = new ArrayList<>();
list.add(new Student("yy", 20));
list.add(new Student("hh", 22));
list.add(new Student("hh", 21));
for (int i = 0; i < list.size()-1; i++) {
for (int j = 0; j < list.size()-1-i; j++) {
Student s1 = list.get(j);
Student s2 = list.get(j+1);
if (s1.getAge()>s2.getAge()) {
//Student temp = s1;
//list.set(j, s2);
//list.set(j+1, temp);
//使用工具类方法
Collections.swap(list, j, j+1);
}
}
}
System.out.println(list);
六.多参数的参数
int...num 这个参数 可以看做一个数组可以当做数组遍历
public static void fun(int ... num) {
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
1.直接传一个数组
int[] array = {1,2,3,4,5};
fun(array);
2.传多个数用逗号隔开
fun4(10,20,30,40);
注意:添加多个参数时,将多参数的参数放到后面。