博客地址:https://blog.csdn.net/houjiyu...
本系列文章將主要針對JAVA一些基礎知識點進行講解,爲平時概括所總結,無論是剛接觸JAVA開發菜鳥仍是業界資深人士,都但願對廣大同行帶來一些幫助。如有問題請及時留言或加QQ:243042162。數據庫
寄語:
再走長征路,回顧過往崢嶸歲月,重溫重要歷史事件,砥礪前行,用腳步丈量新時代的長征路。工做道路上,咱們也要弘揚這種長征精神,堅持不懈,一步一個腳印,腳踏實地,朝着本身的目標前行。
(1)縮略版數組
(2)詳細版
安全
List接口:元素按進入前後有序保存,可重複數據結構
(1)LinkedList:底層數據結構是鏈表,查詢慢,增刪快,線程不安全,效率高,能夠存儲重複元素
(2) ArrayList:底層數據結構是數組,查詢快,增刪慢,線程不安全,效率高,能夠存儲重複元素
(3) Vector:底層數據結構是數組,查詢快,增刪慢,線程安全,效率低,能夠存儲重複元素
Set 接口: 僅接收一次,不可重複,並作內部排序多線程
HashSet和TreeSet區別:
(1)Treeset 中的數據是自動排好序的,不容許放入 null 值。
(2)HashSet 中的數據是無序的,能夠放入 null,但只能放入一個 null,二者中的值都不能重複,就如數據庫中惟一約束。
(3)HashSet 要求放入的對象必須實現 HashCode()方法,放入的對象,是以 hashcode 碼做爲標識的,而具備相同內容的 String 對象,hashcode 是同樣,因此放入的內容不能重複。可是同一個類的對象能夠放入不一樣的實例
HashMap 和 Hashtable 都實現了 Map 接口,所以不少特性很是類似。可是,他們有如下不一樣點:
(1)HashMap 容許鍵和值是 null,而 Hashtable 不容許鍵或者值是 null。
(2)Hashtable 是同步的,而 HashMap 不是。所以,HashMap 更適合於單線程環境,而 Hashtable 適合於多線程環境。
(1)list遍歷框架
public class CollectionMain { public static void main(String[] args) { List<String> testList = new ArrayList<>(); testList.add("1"); testList.add("2"); testList.add("3"); System.out.println("使用Iterator迭代....."); Iterator<String> iterator = testList.iterator(); while (iterator.hasNext()){ String value = iterator.next(); System.out.printf("%s ",value); } //在使用ListIterator迭代時,開始也須要正向迭代,而後在倒序迭代 System.out.println("\n\n使用ListIterator迭代....."); System.out.println("正向遍歷....."); ListIterator<String> listIterator = testList.listIterator(); while (listIterator.hasNext()){ String value = listIterator.next(); System.out.printf("%s ",value); } System.out.println("\n反向遍歷....."); while (listIterator.hasPrevious()){ String value = listIterator.previous(); System.out.printf("%s ",value); } } }
輸出結果spa
使用Iterator迭代..... 1 2 3 使用ListIterator迭代..... 正向遍歷..... 1 2 3 反向遍歷..... 3 2 1
(2)map遍歷.net
public class MapMain { public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(5, "a"); map.put(2, "b"); map.put(3, "c"); map.put(4, "d"); map.put(null, "e");// 和上面相同 , 會本身篩選 System.out.println(map.size()); //方式一:經過Map.keySet遍歷key和value for(Map.Entry<Integer,String> entry:map.entrySet()){ System.out.println("1,key:"+entry.getKey()+",value:"+entry.getValue()); } //方式二:經過Map.entrySet使用iterator遍歷key和value Iterator<Map.Entry<Integer,String>> iterator=map.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry<Integer,String> entry=iterator.next(); System.out.println("2,key:"+entry.getKey()+",value:"+entry.getValue()); } //方法三:通keyset遍歷 for(Integer key:map.keySet()){ String v = map.get(key);//獲得每一個key多對用value的值 System.out.println("3,key:"+key+",value:"+v); } } }
輸出結果線程
5 1,key:null,value:e 1,key:2,value:b 1,key:3,value:c 1,key:4,value:d 1,key:5,value:a 2,key:null,value:e 2,key:2,value:b 2,key:3,value:c 2,key:4,value:d 2,key:5,value:a 3,key:null,value:e 3,key:2,value:b 3,key:3,value:c 3,key:4,value:d 3,key:5,value:a