for循环
for(表达式1;表达式2;表达式3){
循环语句
}
或者更直观的表示为这样:
for(变量初始化;循环条件;迭代语句){
循环语句
}
for循环的执行流程是:
首先执行表达式1,一般是进行变量初始化操作,然后执行表达式2,即对循环条件进行判断,如果结果为真,则执行循环体;循环体执行完毕后,执行表达式3,改变循环变量的值,再次执行表达式2;结果为真,继续循环;如果结果为假,则终止循环,执行后面的语句。
无论执行多少次,表达式1仅执行一次。
死循环:
for (;;) {
System.out.println("===========");
}
list循环中remove/add元素:
Iterator<String> it = a.iterator();
while(it.hasNext()){
String temp = it.next();
if(删除元素的条件){
it.remove();
}
}
map的遍历:
推荐方案1,尤其是数据量大时:
Map<String, String> map = new HashMap<>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "==" + entry.getValue());
}
Map<String, String> map = new HashMap<>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
for (Iterator<String> it = map.keySet().iterator(); it.hasNext(); ) {
String key = it.next();
System.out.println(key + "==" + map.get(key));
}
数组赋值:
Object[] locks = new Object[10];
for (int i = 0; i < locks.length; i++) {
locks[i] = new Object();
}
从一个list对象转换为另一个list对象,取代for循环:
List<Long> rewardTaskIds = Lists.transform(gameActivityVo.getActivityTasks(), new Function<GameActivityTask, Long>() { @Override public Long apply(GameActivityTask gameActivityTask) { return gameActivityTask.getGameRewardTaskId(); } });
list对象转map
ImmutableMap<Long, GameRewardTask> gameRewardTaskImmutableMap = Maps.uniqueIndex(gameRewardTasks, new Function<GameRewardTask, Long>() { @Nullable @Override public Long apply(@Nullable GameRewardTask gameRewardTask) { return gameRewardTask.getId(); } });