栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java笔记1.08

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java笔记1.08

1. 迭代器

用于对各种数据结构的遍历,增删改查
数据结构:链表,栈,堆,队列,树,图…

iterator 接口功能比较简单,并且只能单向移动:
next()获得下一个元素。
hasNext()是否还有元素。
remove()将迭代器新返回的元素删除。

import java.util.*;
import java.lang.*;

public class b {
    public static void main(String[] args) {
        // 数组表
        ArrayList list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        // 定义一个迭代器,并且让其绑定一个数据结构
        Iterator iterator = list.iterator();

        while (iterator.hasNext()) {
            System.out.print(iterator.next());
        }
        System.out.println();
        // 删除list中的两个元素
        // 由于是单向的,所以上面输出后无法返回,需要一个新的迭代器
        Iterator iterator1 = list.iterator();
        for (int i = 0; i < 2; i++) {
            iterator1.next();
            // remove是移除迭代器中的最后一个返回
            iterator1.remove();
        }

        //第二次输出为3,4
        for (int i = 0; i < 3; i++) {
            System.out.println(list.get(i));
        }

    }
}

迭代器返回异常
每一个调用remove()前要使用next(),否则可能引发IllegaStateException异常

import java.util.*;

import javax.swing.text.html.parser.Element;

import java.lang.*;

public class b {
    public static void main(String[] args) {
        // 数组表
        ArrayList list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        // 定义一个迭代器,并且让其绑定一个数据结构
        Iterator iterator = list.iterator();

        while (iterator.hasNext()) {
            System.out.print(iterator.next());
        }
        System.out.println();
        // 删除list中的两个元素
        // 由于是单向的,所以上面输出后无法返回,需要一个新的迭代器
        Iterator iterator1 = list.iterator();
        try {
            // 分别尝试i<4和i<5
            for (int i = 0; i < 5; i++) {
                System.out.print(iterator1.next());
                iterator1.remove();
            }
        } catch (NoSuchElementException e) {
            // 因为越界访问
            System.out.println("发现异常");
        }

        // 第二次输出为3,4
        for (int i = 0; i < 3; i++) {
            System.out.println(list.get(i));
        }

    }
}

实现了Iterable接口的类,可以使用forEache循环遍历
forEach循环

import java.util.*;

import javax.swing.text.html.parser.Element;

import java.lang.*;

public class b {
    public static void main(String[] args) {

        // foreach的语法:
        // for(元素类型 元素名称: 遍历数组(集合)(或者能进行迭代的))
        // 有点像(for int i)
        char l1[] = new char[4];
        l1[0] = 'a';
        l1[1] = 'b';
        l1[2] = 'c';
        l1[3] = 'd';
        for (char c : l1) {
            System.out.println(c);
        }
    }

}
2. 克隆

clone()应该是第三次遇到了,对于类,简单的赋值并不是赋值,而是引用,两个变量类型指向同一块地址,所以需要clone()

浅克隆是指拷贝对象时仅仅拷贝对象本身(对象中的基本变量),而不拷贝对象里面包含的"引用"对象。
深克隆不仅拷贝对象本身,而且拷贝对象里面包含引用指向的所有对象。

就是嵌套的类类型是否拷贝

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号