用于对各种数据结构的遍历,增删改查
数据结构:链表,栈,堆,队列,树,图…
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()
浅克隆是指拷贝对象时仅仅拷贝对象本身(对象中的基本变量),而不拷贝对象里面包含的"引用"对象。
深克隆不仅拷贝对象本身,而且拷贝对象里面包含引用指向的所有对象。
就是嵌套的类类型是否拷贝



