如何遍历一个集合?
遍历一个集合的方法取决于集合的类型。在Java中,常见的集合类型有List、Set和Map等。以下是几种常见的遍历方法:
- 对于List(例如ArrayList):
使用for-each循环:
List<String> list = new ArrayList<>();
// 添加元素到list
for (String item : list) {
System.out.println(item);
}
使用迭代器(Iterator):
List<String> list = new ArrayList<>();
// 添加元素到list
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
- 对于Set(例如HashSet):
使用for-each循环:
Set<String> set = new HashSet<>();
// 添加元素到set
for (String item : set) {
System.out.println(item);
}
由于Set的元素无序,因此使用迭代器的方法和List类似,但遍历的结果可能没有固定的顺序。
3. 对于Map(例如HashMap):
遍历Map的键(key):
Map<String, String> map = new HashMap<>();
// 添加键值对到map
for (String key : map.keySet()) {
System.out.println(key);
}
遍历Map的值(value):
Map<String, String> map = new HashMap<>();
// 添加键值对到map
for (String value : map.values()) {
System.out.println(value);
}
遍历Map的键值对:
Map<String, String> map = new HashMap<>();
// 添加键值对到map
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
ArrayList的扩容机制是怎样的?
ArrayList的扩容机制是在当前容量不足以存储新元素时自动进行扩容。具体来说,当需要添加一个新元素到ArrayList中时,首先会检查当前元素个数是否已经达到了数组的容量上限。如果已经达到容量上限,就会进行扩容操作。扩容操作会创建一个新的数组,其大小通常是当前容量的1.5倍(具体增长因子可能会根据实现有所不同)。然后,会将原数组中的元素复制到新数组中。最后,新旧列表的size大小相同,但elementData的长度即容量不同。
值得注意的是,ArrayList的扩容机制是有一定开销的,因此在预知需要存储大量元素时,最好在创建ArrayList时就指定初始容量,以减少扩容次数,提高性能。