迭代器是接口,被其他集合实现用来遍历。
ArrayList<Integer> sites = new ArrayList<>();
sites.add(10);
sites.add(23);
sites.add(34);
Iterator<Integer> iterator = sites.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
10
23
34
ListIterator 的 previousIndex() 返回后序调用 previous() 的索引,在表头就返回-1;
add() 的作用是当前位置插入元素,后移一步。
System.out.println("依次打印集合所有元素------------------------");
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("当前集合还有下一个元素么?="+it.hasNext());
// add() 往当前位置插入一个值,然后向后跳一步,需要用previous()
// 才能看到该新插入的值。
it.add(999);
System.out.println("在集合当前位置插入一个元素后向后走------------------------");
System.out.println("上一个元素:"+it.previous());
System.out.println("当前集合还有下一个元素么?="+it.hasNext());
System.out.println("下一个元素:"+it.next());
System.out.println("当前集合还有下一个元素么?="+it.hasNext());
result:
依次打印集合所有元素------------------------
10
23
34
当前集合还有下一个元素么?=false
在集合当前位置插入一个元素后向后走------------------------
上一个元素:999
当前集合还有下一个元素么?=true
下一个元素:999
当前集合还有下一个元素么?=false
set() 是用指定的元素替换最近返回的元素,位置不发生改变。
System.out.println("向后依次打印集合所有元素------------------------");
while (it.hasNext()) {
System.out.println(it.next());
}
it.set(999);
System.out.println("当前集合还有下一个元素么?="+it.hasNext());
// System.out.println("当前集合的上一个元素是"+it.previous());
System.out.println("向前依次打印集合所有元素------------------------");
while (it.hasPrevious()) {
System.out.println(it.previous());
}
it.set(888);
System.out.println("向后依次打印集合所有元素------------------------");
while (it.hasNext()) {
System.out.println(it.next());
}
result
向后依次打印集合所有元素------------------------
10
23
34
当前集合还有下一个元素么?=false
向前依次打印集合所有元素------------------------
999
23
10
向后依次打印集合所有元素------------------------
888
23
999
Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
package test;
/**
* @Description: TODO
* @author: HardyDragon
* @date: 2021年06月10日 17:04
*/
public class Test07 {
public static void main(String[] args) {
User user = new User();
user.name = "Tom";
user.age = 18;
System.out.println(user.name);
System.out.println(user.age);
// 由于 Object 本身没有实现 Cloneable 接口,
// 所以不重写 clone 方法并且进行调用的话会发生 CloneNotSupportedException 异常。
try {
User clone = (User)user.clone();
System.out.println(clone.name);
System.out.println(clone.age);
} catch (Exception e) {
System.out.println(e);
}
}
}
// 类需要实现 Cloneable 接口才能使用clone方法
class User extends Object implements Cloneable{
String name;
int age;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
result
Tom
18
Tom
18
equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等
notify() 和notifyAll() 和线程相关。唤醒在该对象上等待的某个线程/所有线程
wait() 让当前线程进入等待状态。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
wait() 还可以设置超时参数和额外时间参数。。