最常見的Java常見面試題問答(6)

發表于:2013-01-24來源:ImportNew作者:不詳點擊數: 標簽:java
A:上面的代碼代碼通過把原有列表傳入一個LinkedHashSet來去除重復的元素。在這個情況里,LinkedHashSet可以保持元素原來的順序。如果這個順序是不需要的話

  A:上面的代碼代碼通過把原有列表傳入一個LinkedHashSet來去除重復的元素。在這個情況里,LinkedHashSet可以保持元素原來的順序。如果這個順序是不需要的話,那么上面的LinkedHashSet可以用HashSet來替換。

  Q:Java集合框架都有哪些最佳實踐呢?

  A:根據實際的使用情況選擇合適的數據結構,例如固定大小的還是需要增加大小的,有重復元素的還是沒有的,需要保持有序還是不需要,遍歷是正向的還是雙向的,插入是在末尾的還是任意位置的,更多的插入還是更多的讀取,是否需要并行訪問,是否允許修改,元素類型是相同的還是不同的,等等。另外,還需要盡早考慮多線程,原子性,內存使用量以及性能等因素。

  不要假設你的集合里元素的數量一直會保持較小,它也有可能隨著時間增長。所以,你的集合最好能夠給定一個合適的大小。

  針對接口編程優于針對實現編程。例如,可能在某些情況下,LinkedList是最佳的選擇,但是后來ArrayList可能因為性能的原因變得更加合適

  不好的方式:

1
ArrayList list = new ArrayList(100);

  好的方式:

1
2
3
4
5
6
// program to interface so that the implementation can change
List list = new ArrayList(100);
List list2 = new LinkedList(100);
 
List emptyList = Collections.emptyList( );
Set emptySet = Collections.emptySet( );

  在取得列表的時候,如果返回的結果是空的話,最好返回一個長度為0的集合或者數組,而不要返回null。因為,返回null的話可能能會導致程序錯誤。調用你的方法的開發人員可能會忘記對返回為null的情況進行處理。

  封裝好集合:一般來說,集合都是不可變的對象。所以盡量不要把集合的成員變量暴露給調用者。因為他們的操作一般都不會進行必要的校驗。

  注:這些Java面試題和答案都是從我的書《Core Java Career Essentials》里提取出來的。

原文轉自:http://www.importnew.com/871.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97