第十三课:迭代器以及有序二叉树

这里写目录标题

迭代器

1、在迭代器中使用迭代,然后直接使用,<集合>.remove(迭代出的元素)
异常:ConcurrentModificationException
安全隐患
解决:不能够在迭代器中使用集合自己的remove方法
用iterator.remove()来代替
remove():删除当前游标所在位置的元素
不会改变游标位置
2、迭代器的简化->增强for循环 forEach
for(每一次迭代出来的元素临时变量:要迭代的集合/数组{}
例如:for(String s : col){
System.out.println(s);
}
注意:forEach只能遍历元素使用,不能迭代移除
3、List:特点->有序的【有下标】,允许重复元素
有序:添加顺序就是访问顺序
排序:由小到大,由大到小
List的遍历/迭代: 可以用Iterator
for
forEach
4、Collection:toArray
Object[ ] toArray():无参,返回值类型永远都是Object[ ],和泛型无关
T[ ] toArray(T[ ]):参数->一个具体的类型的数组,作用只是为了提供类型
5、Collection: remove
remove(Object o)
原理: 遍历集合, 将每一个元素.equals(o)
contains(Object o)
6、java.util.Arrays: 数组相关工具类
toString() -> 打印数组内容
sort(arr) -> 数组排序
copyOf() -> 数组复制
asList(arr) -> List 将数组转换成集合
-> 本质上还是数组, 数组长度不可变
7.java.util.Collections: 集合相关的工具类
sort(List) -> 给List排序, 所有元素必须是可比较的
java.lang.Comparable -> 接口, 可比较的
int compareTo(T t)

下面展示一些 内联代码片

// A code block
var foo = 'bar';
public class IteratorDemo {
    public static void main(String[] args) {
        Collection<String> col = new ArrayList<>();
        col.add("q");
        col.add("w");
        col.add("e");
        col.add("r");
        col.add("t");

        Iterator<String> it = col.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
            it.remove();
        }
        for(String a : col){
            System.out.println(a);
        }
    }
}

有序二叉树

有序二叉树:不允许重复
特点:左节点<父节点<右节点
中间遍历:左节点,中间节点[根节点],右节点
遍历结果:升序

下面展示一些 内联代码片

// A code block
var foo = 'bar';
public class Tree {
    private class Node{
        private int data;
        private Node right;
        private Node left;
        public Node(int data){
            this.data = data;
        }
        private Node root;
        public void add(int a){
            if(root == null){
                root.data = a;
                return;
            }
            Node node = root;//记录每一次的当前节点
            Node parentNode;//记录每一次node的父节点
            while(true){
                parentNode = node;
                if(node.data > a){
                    node = node.left;
                    if(node == null){
                        parentNode.left = new Node(a);
                        return;
                    }
                }else if(node.data < a){
                    node = node.right;
                    if(node == null){
                        parentNode.right = new Node(a);
                        return;
                    }
                }
            }
        }}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值