這是一個很經典的面試題,其實考了很多點
首先先問問,你這個List是ArrayList還是LinkedList
那么為什么要問這個呢,ArrayList和LinkedList區別我就不介紹了吧,ArrayList數組結構,LinkedList鏈表結構。
ArrayList 測試結果 for循環測試結果:11920 foreach循環測試結果:15765 iterator循環測試結果:13040
LinkedList 測試結果 for循環測試結果:146654 foreach循環測試結果:2061 iterator循環測試結果:2061
根據以上可以得到的結果是:for循環便於訪問順序存儲(ArrayList)的記錄,而foreach和迭代器便於訪問鏈接存儲(LinkedList)。
這回面試官又發問了,那如果我的list里面有1000w條數據呢?
首先,肯定是要多線程分段查找了,這回我查找的方式也要變一變了,那我就得反問你一句,面試官你的數據是有序的嗎,如果是有序的,那么我們可以用二分查找,你看,又提升效率了,如果是無序的,那我咋辦,老辦法唄,你是Arraylist還是LinkedList啊。
最后的最后,你可以提出你的想法,告訴面試官,下次再有1000w條數據,可千萬別放在List里面,hash化一下多好,要誰查誰