1.泛型
泛型可以标识集合的元素
泛型的好处
1.可以把运行的错误 转到编译时报错
2.避免强转的麻烦
3.规范集合的数据 数据更加安全
2.正向 反向 遍历数组
private static void fun1() {
//泛型前后的类型要一致
//1.7JDK 菱形泛型 :后面填的可以省去
//
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
//遍历集合
ListIterator<String> listIterator = list.listIterator();
//正向遍历
while(listIterator.hasNext()) {
//获取集合中的元素
String next = listIterator.next();
System.out.println(next);
}
//逆向遍历
//判断前一个是否有元素
while(listIterator.hasPrevious()) {
//获取前一个元素
String string = listIterator.previous();
System.out.println(string);
}
}
结果:abcddcba;
3.多参数的参数
int ... num 可以看成一个数组
当做数组来遍历
使用方法:1.可以传一个数组
2.可以传多个数 用逗号隔开
public static void main(string[] ags){
int[] a= {1,2,3,5};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
结果: 1
2
3
5
4.泛型中的int[]和Integer[]区别
public static void main(String[] args) {
int[] a= {1,2,3,5};
//根据泛型 这个集合 每一个元素 都是一个数组 数组打印出来是地址
List<int[]> asList = Arrays.asList(a);
System.out.println(asList);
//直接传入int[] 数组 系统不会帮你进行自动装箱
Integer[] newArray= {1,2,3,5};
//直接把数组中的元素 放入集合中
List<Integer> asList2 = Arrays.asList(newArray);
System.out.println(asList2);
}
结果:
5.
?extends E
Person是父类 Student是子类 这里就不写了//创建一个Person集合 保存2个Person
ArrayList<Person> list = new ArrayList<>();
list.add(new Person("wang1",11));
list.add(new Person("wang2",11));
//创建一个Student集合 保存2个student
ArrayList<Student> list2 = new ArrayList<>();
list2.add(new Student("peng1",12));
list2.add(new Student("peng2",12));
//addAll(Collection<? extends E> c)
list.addAll(list2);
//list2.addAll(list);这里就错了
System.out.println(list);
结果:
[Person [name=wang1, age=11], Person [name=wang2, age=11], Person [name=peng1, age=12], Person [name=peng2, age=12]]