Java中的Set和Map是兩種常見的數據結構,在Java程序設計中都有廣泛的應用。雖然它們很相似,但它們的用途略有不同,下面我們將分別介紹Set和Map以及它們之間的區別。
Set
Set<E> set = new HashSet<>(); set.add("Java"); set.add("C++"); set.add("Python"); set.add("Java"); for (String s : set) { System.out.print(s + " "); }
Set是一種無序、不可重復的集合。Set中元素的順序不能保證,你添加進去的元素,可能不是你讀取該元素時的順序。另外,Set中的元素不可重復,你添加一個已經存在的元素,Set中僅保留一個。Set有兩種常見的實現:HashSet和TreeSet。
Map
Map<String, String> map = new HashMap<>(); map.put("name", "Tom"); map.put("age", "18"); map.put("gender", "male"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
Map是一種鍵值對存儲的映射表。Map中每一個元素都包含了兩個對象,即key和value。Map中的key和value可以分別加入和讀取。值得注意的是,key不能重復,否則會覆蓋原有的value。Map有兩種常用實現:HashMap和TreeMap。
Set和Map的區別
Set和Map有很多相似之處,它們都是用于存儲對象的集合。但二者之間還是存在一些區別:
- Set中存儲元素,Map中存儲的是鍵值對。
- Set中的元素不可重復,Map的key也不可重復,但value可以重復。
- Set中的元素沒有順序,Map中的key是無序的,但是value可以根據key的自然順序或比較器順序進行排序。
- Set有兩種常見實現:HashSet和TreeSet,Map有兩種常見實現:HashMap和TreeMap。
綜上所述,Set和Map都是Java中常用的數據結構,用于存儲集合和映射表。二者的最主要的區別是,Set和Map中元素的不同,以及Set中的元素沒有順序。如果你需要存儲不同類型的對象,或者想要通過key-value的方式存儲數據,那么它們都是不錯的選擇。