Java学习笔记-3

Java学习笔记-3

Iterator迭代器

迭代:Collection集合元素的通用获取方式,循环判断集合中是否有目标元素并提取

Iterator接口

  1. 在util下
  2. hasNext方法判断集合中是否有下一个元素,返回布尔值
  3. next方法返回迭代的下一个元素
  4. Collection接口下有iterator方法,返回的即为Iterator对象(同时将索引指向-1位置),用Iterator接口接收(多态),泛型与集合相同

泛型

<泛型类型名>

1.泛型类

在类名后加,方法的返回值也为E
创建对象时要制定泛型类型,即与集合的创建方式相同

2.泛型方法

泛型类型名加在方法修饰符与返回类型之间

3.泛型接口

与泛型类相似,接口的实现类要制定泛型类型(比如implements interface)
如果是泛型类实现泛型接口就可以不用指定

4.泛型通配符

? 代表任意数据类型
适用于作为参数传递时,接收一个任意通配泛型形参做迭代,获取的对象只能说Object类型

5.泛型限定

1)泛型上限限定

? extends E
使用的泛型只能是E及其子类
比如E是Number,使用的就可以是Integer

2)泛型下限限定

? super E
使用的泛型只能是E及其父类


package day2;

import java.util.*;

public class day2<E> {

    public void setName(E name)
    {
        this.name = name;
    }

    public E getName()
    {
        return this.name;
    }

    public static <M> void printVar(M m)
    {
        System.out.println(m);
    }

    //泛型通配符
    public static void printArray(ArrayList<?> arr)
    {
        Iterator<?> it = arr.iterator();
        while(it.hasNext())
        {
            Object o = it.next();
            System.out.println(o);
        }
    }
    
    private E name;

    public static void main(String args[]) {
        //迭代器
        Collection<String> coll = new ArrayList<>();
        coll.add("AAA");
        coll.add("BBB");
        coll.add("CCC");
        coll.add("XXX");

        Iterator<String> it = coll.iterator();
//        while(it.hasNext())
//        {
//            System.out.println(it.next());
//        }
        for (Iterator<String> it2 = coll.iterator(); it2.hasNext(); ) {
            System.out.println(it2.next());
        }
        System.out.println();

        //泛型类
        day2<String> obj1 = new day2<String>();
        obj1.setName("AAA");
        System.out.println(obj1.name);

        day2<Integer> obj2 = new day2<Integer>();
        obj2.setName(111);
        System.out.println(obj2.name);

        day2<Character> obj3 = new day2<Character>();
        obj3.setName('X');
        System.out.println(obj3.name);

        //泛型方法
        day2.printVar("静态泛型方法");

        //泛型接口
        MyInterfaceImpl1 impl1 = new MyInterfaceImpl1();
        impl1.mth("泛型类实现泛型接口");

        new MyInterface<String>() {
            @Override
            public void mth(String s) {
                System.out.println(s);
            }
        }.mth("匿名对象实现泛型接口");
        System.out.println();

        //泛型通配符方法
        day2.printArray((ArrayList)coll);
    }
}

package day2;
//泛型接口
public interface MyInterface<E> {
    public abstract void mth(E e);
}

package day2;
//泛型接口实现类
public class MyInterfaceImpl1<E> implements MyInterface<E>{
    @Override
    public void mth(E e)
    {
        System.out.println(e);
    }
}

数据结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

双向链表中节点也会记录上一个节点的地址(通过第二条链)


二叉树
分支不能超过两个

1.排序树/查找树
为二叉树,左子树小,右子树大
每个根/节点下面都是左分支小,右分支大,适用于二分查找

2.平衡树
左子树与右子树数量相等

3.红黑树
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值