臨時記錄java的一些小知識點
List的遍歷方式
- for each 增強的for循環
for(bject o :list){
}
- Iterator 使用Iterator迭代器
Iterator iter = list.iterator();
while(iter.hasNext()){
Object o = iter.next();
}
- loop without size
int size = list.size();
for(int i=0;i<size;i++){
Object o= list.get(i);
}
- loop with size 普通遍歷方式
for(int i=0;i<list.size();i++){
Object o= list.get(i);
}
- java8 Lambda方式
// strList.forEach(System.out::println);//和下面的寫法等價
strList.forEach(str -> {
System.out.println(str);
});
ArrayList測試分析
經過編寫測試代碼,結果如下:(時間單位:納秒)
Size | ForEach | IteratorWay | WithoutSize | WithSize |
---|---|---|---|---|
100 | 558,757 | 54,603 | 32,023 | 47,213 |
10,000 | 2,074,092 | 513,186 | 828,897 | 557,936 |
1,000,000 | 15,347,540 | 14,032,553 | 9,457,398 | 10,051,462 |
總結
(1)對於ArrayList和LinkedList,在size小於1000時,每種方式的差距都在幾ms之間,差別不大,選擇哪個方式都可以。
(2)對於ArrayList,無論size是多大,差距都不大,選擇哪個方式都可以。
(3)對於LinkedList,當size較大時,建議使用迭代器或for-each的方式進行遍歷,否則效率會有較明顯的差距。
if語句裏面continue和break的區別
continue語句和break語句的區別如下:
1、break:while循環break是用於永久終止循環。即不執行本次循環中break後面的語句,直接跳出循環
2、continue:while循環continue是用於終止本次循環。即本次循環中continue後面的代碼不執行,進行下一次循環的入口判斷
break:結束整個循環體
continue:結束本次循環
public static void main(String[] args) {
int x=0;
while(x++ < 10)
{
if(x == 3)
{
break;
}
System.out.println("x="+x);
}
int y=0;
while(y++ < 10)
{
if(y == 3)
{
continue;
}
System.out.println("y="+y);
}
}
continue語句的注意事項:
-
break可以在if-else中使用直接跳出當前循環。
-
在多層循環中, 一個break語句只向外跳一層。
continue語句的作用是跳過循環體中剩餘的語句併到循環末尾而強行執行下一次循環。
continue語句只用在for、while、do-while等循環體中, 常與if條件語句一起使用, 用來加速循環。
return、return true、return false 的區別
js注意
return false;返回錯誤的處理結果;終止處理;阻止提交表單;阻止執行默認的行爲
共性:
return、return false、return true 都會在函數內部阻止程序的執行
return true; 返回正確的處理結果
return false;返回錯誤的處理結果;終止處理;阻止提交表單;阻止執行默認的行爲、中斷代碼繼續向下 執行
return
1.把控制權返回給頁面
2.返回null,起到中斷方法執行的效果,只要不return false事件處理函數將會繼續執行,表單將提交