// 1.fori循环遍历
// 效率最高 也是java官方推荐的用法
for (int i = 0; i < list.size(); i++) {
Integer a = list.get(i);
}
// 2.增强for循环
for (int i : list) {
Integer a = i;
}
// 3.iterator 迭代器 for (Iteratoriterator = list.iterator(); iterator.hasNext();) { Integer a = (Integer) iterator.next(); } // while 循环写法 Iterator iterator = list.iterator(); while (iterator.hasNext()) { Integer a = (Integer) iterator.next(); }
// 4.lambda
// lambda 最慢不推荐 java8 lambda
list.forEach(item -> {
Integer a = item;
});
// 5.stream foreach java8 特有
list.stream().forEach(item -> {
Integer a = item;
});
// 6.parallelStream foreach java8 特有
list.parallelStream().forEach(item -> {
Integer a = item;
});
List 删除元素
fori循环遍历
这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。
这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用
增强for循环
删除元素后继续循环会报错误信息ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。
但是删除完毕马上使用break跳出,则不会触发报错
iterator 迭代器
iterator遍历可以正常的循环及删除。但要注意的是,使用iterator的remove方法,
如果用list的remove方法同样会报上面提到的ConcurrentModificationException错误
Iteratoriterator = list.iterator(); while (iterator.hasNext()) { Integer a = (Integer) iterator.next(); iterator.remove(); }
以上3中循环的总结:
(1)循环删除list中特定一个元素的,可以使用三种方式中的任意一种,但在使用中要注意上面分析的各个问题。
(2)循环删除list中多个元素的,应该使用迭代器iterator方式。
// 1.迭代器 EntrySet Iterator> entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = entries.next(); Integer key = entry.getKey(); Integer value = entry.getValue(); }
// 2.迭代器 KeySet Iteratoriterator = map.keySet().iterator(); while (iterator.hasNext()) { Integer key = iterator.next(); Integer value = map.get(iterator.next()); }
// 3.ForEach EntrySet 这是最常用的方式 for (Map.Entryentry : map.entrySet()) { Integer key = entry.getKey(); Integer value = entry.getValue(); }
// 4.ForEach KeySet
for (Integer key : map.keySet()) {
Integer key1 = key;
Integer value = map.get(key1);;
}
// 5.Lambda
map.forEach((key, value) -> {
Integer key1 = key;
Integer value1 = value;
});
// 6.Streams API 单线程
map.entrySet().stream().forEach((entry) -> {
Integer key = entry.getKey();
Integer value1 = entry.getValue();
});
// 7.Streams API 多线程
map.entrySet().parallelStream().forEach((entry) -> {
Integer key = entry.getKey();
Integer value1 = entry.getValue();
});
for (Integer value : map.values()) {
Integer value1 = value;
}
IteratorHashMap 删除元素iteratorValues = map.values().iterator(); while (iteratorValues.hasNext()) { Integer value1 = iteratorValues.next(); }
Iterator> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); if (entry.getKey() == 1) { // 删除 System.out.println("del:" + entry.getKey()); iterator.remove(); } else { System.out.println("show:" + entry.getKey()); } }
for (Map.Entryentry : map1.entrySet()) { if (entry.getKey() == 1) { // 删除 System.out.println("del:" + entry.getKey()); map1.remove(entry.getKey()); } else { System.out.println("show:" + entry.getKey()); } }
map2.forEach((key, value) -> {
if (key == 1) {
System.out.println("del:" + key);
map2.remove(key);
} else {
System.out.println("show:" + key);
}
});
map2.keySet().removeIf(key -> key == 1);
map2.forEach((key, value) -> {
System.out.println("show:" + key);
});
map2.entrySet().stream().forEach((entry) -> {
if (entry.getKey() == 1) {
System.out.println("del:" + entry.getKey());
map2.remove(entry.getKey());
} else {
System.out.println("show:" + entry.getKey());
}
});
map2.entrySet().stream().filter(m -> 1 != m.getKey()).forEach((entry) -> {
if (entry.getKey() == 1) {
System.out.println("del:" + entry.getKey());
} else {
System.out.println("show:" + entry.getKey());
}
});
Set 循环
Iteratorit = set.iterator(); while (it.hasNext()) { String str = it.next(); System.out.println(str); }
for (String str : set) {
System.out.println(str);
}
Property 遍历
System.out.println("---------(方式一)------------");
Set


