泛型:标识着集合中保存元素是什么类型的
<泛型(类型)>
ArrayList<String>
好处:
1.操作数据更加安全(规范集合中 能保存的数据)
2.可以避免向下转型(强转类型)的麻烦
3.将运行的错误 转到编译时报错
4.泛型类 可以在类中加入 使用泛型
//泛型 前后类型要一致
//JDK1.7 菱形泛型
//后面的类型可以省去
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
// 遍历集合
ListIterator<String> iterator = list.listIterator();
//正向遍历
while (iterator.hasNext()) {
//获取集合中的元素
String string = iterator.next();
System.out.println(string);
}
//逆向遍历
//判断前一个是否有元素
while(iterator.hasPrevious()){
//获取前一个元素
String previous = iterator.previous();
System.out.println(previous);
}
//多参数的参数
//int ... num 可以看成一个数组
//可以当做数组 来遍历
//使用方式
//1.直接传一个数组
//2.传多个数 用逗号分开
//注意: 多个参数时 最好把 多参数放到最后
public static void fun4(int ... num){
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
//数组转集合
int[]array = {1,2,3,4,5};
//根据泛型 这个集合中 每一个元素 都是一个数组
List<int[]> list = Arrays.asList(array);
System.out.println(list);
//直接传入 int数组 系统不会帮你 自动装箱
Integer[]newArray = {1,2,3,4,5};
//直接把数组中的元素 放入集合中
List<Integer> asList = Arrays.asList(newArray);
System.out.println(asList);
String[] strings = {"wanglong","pengqian","xiaofeng"};
//数组转集合
List<String> asList = Arrays.asList(strings);
//添加一个元素
//UnsupportedOperationException
//不支持的操作异常
//使用aslist方法 将数组 转化成集合
//注意: 不能对集合的长度发生改变(不能增删)
//转化成集合后 可以调用集合中的其他方法
//asList.add("kun");
boolean contains = asList.contains("wanglong");
System.out.println(contains);
// 创建一个集合 保存三个学生
// 按年龄排序
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("彭",18));
list.add(new Student("坤",17));
list.add(new Student("龙",80));
for (int i = 0; i < list.size(); 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);