Spring Ioc源碼分析系列--自動註入迴圈依賴的處理 前言 前面的文章Spring Ioc源碼分析系列--Bean實例化過程(二)在講解到Spring創建bean出現迴圈依賴的時候並沒有深入去分析了,而是留到了這一篇去分析。為什麼要另起一篇,首先迴圈依賴是個很經典的問題,也是面試屢屢被問到的問 ...
轉自:
http://www.java265.com/JavaMianJing/202205/16533147383474.html
Vector簡介:
Vector是一個可變的對象數組,它是線程安全的,Vector可根據實際需要增大和縮小
Vector類實現了一個可增長的對象數組,像數組一樣包含可以使用整數索引訪問的組件,大小可以根據需要增加或縮小,以適應在創建 Vector 後添加和刪除
每個向量都試圖通過維護 capacity 和 capacityIncrement 增量來優化存儲管理,capacity 總是至少與向量大小一樣大;通常更大,因為隨著組件被添加到向量中,向量的存儲以 capacityIncrement 增量大小的塊的形式增加
該類的 iterator 和 listIterator 方法返回的 iterator 是快速失敗的:如果在創建迭代器後的任何時間對向量進行結構修改,除了通過迭代器自己的remove或add方法外,迭代器將拋出 ConcurrentModificationException。因此,面對併發修改,迭代器快速而乾凈地失敗,而不是冒著在未來不確定的時間出現任意、非確定性行為的風險。elements方法返回的Enumerations 不是快速失敗的
從 Java 2 平臺 v1.2 開始,該類經過改造以實現List介面,使其成為Java Collections Framework的成員。與新的集合實現不同,Vector是同步的、線程安全的。如果不需要線程安全的實現,建議使用ArrayList代替Vector
下文筆者講述刪除Vector中重覆元素的方法分享,如下所示:
實現方式:
1.使用for迴圈遍歷元素,同時結合contains判斷元素是否存在
2.使用HashSet 實例化即可達到剔除重覆元素
Vector newVector = new Vector(); for (int i=0;i<vector.size();i++) { Object obj = vector.get(i); if(!newVector.contains(obj); newVector.add(obj); } -----或-------- HashSet set = new HashSet(vector);