深秋---JAVA 泛型

泛型
泛型就是在创建对象的时候 给泛型 赋类型
特点:
1.增强了代码的安全性
2.省去的强制转换的麻烦
泛型还可以把在编译器上不会显示的错误 在编译器上显示出来
避免了编译通过却运行不通过时 寻找bug的麻烦

ArrayList<String> list = new ArrayList<>();

这样就最简单的声明一个集合 并且这个集合的类型是String类型的
正向遍历和逆向遍历


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 previous = listIterator.previous();
            System.out.println(previous);

想要逆向遍历就必须先要正向遍历
因为next就相当于一个指针 每一次正向遍历 指针就会指向后一个数
而逆向遍历每一次就会指向前一个数
而在未遍历之前系统默认指向的是最前方的数
这时逆向遍历就会找不到元素 误以为是个空的集合

泛型的接口
通配符:
? extends E
?—>子类
E—>父类

? super E
?—>父类
E—>子类

int ...
int ...相当于是一个数组 所以要在要另外在集合中添加int类型的参数时 需要写在int ...的前面 写在后面会被默认为是int ...数组中的一个元素

删除的三种方式(遍历的三种方式)
1.普通遍历
如果集合中有”b”就删除它

ArrayList<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
for(int i = 0, i < strings.size(); i++){
    if(strings.get(i).equals("b")){
    strings.remove(i--);
    }
    System.out.println(strings.get(i));
}

2.迭代器删除

ArrayList<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
Iterator<String> iterator = strings.iterator();
while(iterator.hasNext()){
    if(iterator.next().equals("b")){
    iterator.remove();
    }
}
System.out.println(strings);

3.增强for循环遍历集合
(一般只用来打印 不做删除的操作)

ArrayList<String> strings = new ArrayList<String>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
for(String string : strings){
    System.out.println(string);
}

集合的嵌套
在一个集合的<>中写上另一个集合
例:
创建一个学科 这个学科有两个班 每个班有两个学生

ArrayList<ArrayList<Student>> subjects = new ArrayList<>();
ArrayList<Student> classes1 = new ArrayList<>();
classes1.add(new Student("小明",18));
classes1.add(new Student("小红",17));
ArrayList<Student> classes2 = new ArrayList<>();
classes2.add(new Student("小黑", 16));
classes2.add(new Student("小光", 15));
subjects.add(classes1);
subjects.add(classes2);
for(ArrayList<Student> classes : subjects){
    for(Student student : classes){
    System.out.println(student);
    }
}

Collection中的sort(list)方法
这个方法时系统提供的排序方法
但 按什么规则排序 系统不知道
系统会提供一个接口 你去实现这个接口
在接口中 写上排序规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值