This article is categorized as "Garbage" . It should NEVER be appeared in your search engine's results.
本篇笔记很短。
Table of Contents
iterator
example
最简单的用法:
把https://truxton2blog.com/review-java-from-python/ 的一段代码拉过来修改:
import java.util.ArrayList;
public class demo {
public static void main(String[] args) {
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add("Demo");
arrayList.add(1.4415141);
arrayList.add(9999999999999L);
for (Object obj : arrayList) {
System.out.println(obj);
}
}
}
改成:
import java.util.ArrayList;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add("Demo");
arrayList.add(1.4415141);
arrayList.add(9999999999999L);
Iterator<Object> iterator = arrayList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
就可以了!
另:HashMap的iterator:
import java.util.HashMap;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("1234", "1234");
hashMap.put("4321", "4321");
hashMap.put("123", "123");
hashMap.put("12345", "12345");
Iterator<String> iterator = hashMap.keySet().iterator();
// 注意上面这一行的.keySet():iterator和for each并没有什么本质区别,仍然要使用keySet()或者values()这样的方法先转换一步
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + "----" + hashMap.get(key));
}
}
}
讨论
值得注意的是,和Scanner的nextInt(), nextFloat(), nextDouble, nextline()等多种类型选择不同,iterator只能使用hasNext()和Next():
讨论一些iterator的优缺点
下面的内容来自https://blog.csdn.net/maozhr720/article/details/76222732
- (iterator)缺点是只能从头开始遍历, 优点是可以边遍历边删除。
- (for each遍历) 底层实现也是基于iterator,所以也只能从头开始遍历,性能上比iterator要稍慢一些,因为多了一层类型自动转换。
- 基于for each方式的遍历,还有一个缺点就是遍历过程中不允许删除元素,否则会抛ConcurrentModificationException
LinkedList
需要注意,虽然从设计上来看,使用index访问LinkedList是不高效的,但Java仍然提供了get(index)这样的方法来通过索引访问链表内容。 LinkedList并不是黑箱!
与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。(ref)
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
add():默认向链表的末尾添加
add(index, ):向index的位置添加,添加以后LinkedList索引的 index 位置的元素就是刚刚添加进来的元素
get(index):获取任意index上的元素
example:
import java.util.LinkedList;
public class demo {
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("1");
linkedList.add("2");
linkedList.add("3");
linkedList.add("4");
linkedList.add("5");
linkedList.add(2, "between 2 and 3"); // 注意这一行是“between 2 and 3”
for (String str : linkedList) {
System.out.println(str);
}
}
}
Last Modified in 2023-05-15