記得有一次筆者去面試的時候,面試官曾問過一個問題,當一個數組中存在重複元素的時候,有多少種比較好的辦法去掉數組中的重複元素?
客官,你知道幾種?
現在筆者來分享一下當初筆者是如何回答的!
第一種
想來大多數人肯定首先想到的是使用set集合,畢竟set集合是不允許存在兩個重複的元素的。
實現
int [] array = {1,1,2,2,3,3};
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<array.length;i++) {
list.add(array[i]);
}
Set<Integer> set = new HashSet<Integer>();
set.addAll(list);
System.out.println(set);
}
結果
第二種,使用List集合的contains()方法,contains()方法檢查數組是否已經擁有這個元素,存在則返回true
int [] array = {1,1,2,2,3,3};
List<Integer> list = new ArrayList<Integer>();
for(int i:array) {
if(!list.contains(i)) {
list.add(i);
}
}
System.out.println(list);
}
當初筆者就是這樣回答了面試官,正在看的你是否還知道還有那種比較好的方法解決數組元素重複的問題?不妨拿出來分享一下
相關推薦
'Java中的String為什麼是不可變的?'
"什麼是不可變對象?眾所周知, 在Java中, String類是不可變的。那麼到底什麼是不可變的對象呢? 可以這樣認為:如果一個對象,在它創建完成之後,不能再改變它的狀態,那麼這個對象就是不可變的。不能改變狀態的意思是,不能改變對象內的成員變量,包括基本數據類型的值不能改變...
Java
2019-09-12
'Java中15種鎖的介紹!鎖不鎖不知道,反正Java挺好用的'
"導讀(需要Java相關學習資料,轉發私信小編“學習”)在讀很多併發文章中,會提及各種各樣鎖如公平鎖,樂觀鎖等等,這篇文章介紹各種鎖的分類。介紹的內容如下:1.公平鎖 / 非公平鎖2.可重入鎖 / 不可重入鎖3.獨享鎖 / 共享鎖4.互斥鎖 / 讀寫鎖5.樂觀鎖 / 悲觀鎖...
'高級工程師系列之在Java中如何優雅地判空'
"判空災難NullPointerException作為搬磚黨的一族們,我們對判空一定再熟悉不過了,不要跟我說你很少進行判空,除非你喜歡NullPointerException。不過NullPointerException對於很多猿們來說,也是Exception家族中最親近的...
'程序員心中的八大噩夢,你中了幾條?'
" 1.技術大牛也幫不了忙“呀,這個問題好難,我要去GitHub看看,然後就沒有然後了...”很多程序員都會收藏一些優秀的編程交流社區或者網站,利用裡面的資源提高自己的編程能力。程序員最大的噩夢就是頂尖開發社區裡面的技術大牛都回答不了他們的問題。2.鍵盤上最心愛的快捷鍵壞了...
'通過示例和源碼深入分析Java 8 中的Stream實現原理'
"上一篇文章介紹了Java 8引入的新特性Stream的用法,如果只是會用,那是經不住面試官問的,必須要在會用的基礎上能夠深入的分析它的實現原理,今天我們接著來分析一下Stream的實現原理。這篇文章先只分析創建Stream的實現原理,剩下的內容將會在接下來的文章進行分析。...
'java中的棧幀'
"棧幀數據結構棧幀(Stack Frame)是用來支持虛擬機進行方法調用和方法執行的數據結構,它是虛擬機運行時數據區中的虛擬機棧的棧元素。棧幀(Stack Frame)存儲了方法的局部變量表、操作數棧、動態連接、和方法返回地址、額外的附加信息。每個方法在執行的同時,都會創建...
'Java集合中List,Set以及Map等集合體系詳解(史上最全)'
"學神請坐,聽我慢慢道來!List , Set, Map都是接口,前兩個繼承至Collection接口,Map為獨立接口List下有ArrayList,Vector,LinkedListSet下有HashSet,LinkedHashSet,TreeSetMap下有Hasht...
'java中,jdk12的新特性'
"1.微基準測試microbenchmark作為常規性測試的一部分,在JDK源代碼中添加一組基礎的微基礎測試,可以基於java microbenchmark harness 輕鬆測試JDK的性能代碼示例@Fork(2)@Threads(8)@BenchmarkMode(Mo...
推薦中...