<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Set介面下的集合都會有以下特點
HashSet集合的特點
HashSet<元素資料型別> set = new HashSet<>();
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); }
方法 | 解釋 |
---|---|
boolean add(E e) | 新增元素,如果元素新增不成功 返回值代表是否新增成功 |
boolean remove(Object o) | 刪除元素 ,返回值代表刪除元素是否成功 |
boolean contains(Object o) | 判斷元素是否存在 |
int size() | 獲取集合的大小 |
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); //新增元素 boolean f = set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); System.out.println(f); }
我們打斷點偵錯一下:
可以看到愚生淺末四個字元已經裝入set,且f為true證明新增成功。
我們再試試刪除:
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); //新增元素 set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); boolean f = set.remove("生"); }
可以看到set已經沒有生了,且f為true代表刪除成功。
判斷是否存在:
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); //新增元素 set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); boolean f = set.contains("末"); }
末是存在於set的,所以返回值為true。
獲取集合的大小:
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); //新增元素 set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); //獲取集合的大小 int size = set.size();
新增了愚生淺末四個字元,所以可以得到size是4.
1.轉換為陣列遍歷
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); String[] strings = set.toArray(new String[0]); for (int i = 0; i < strings.length; i++) { System.out.println(strings[i]); } }
結果:
前面說過:儲存元素的順序和遍歷獲取出來的順序可能不一致。
2.使用迭代器遍歷
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); Iterator<String> it = set.iterator(); while (it.hasNext()){ String s = it.next(); System.out.println(s); } }
結果:
3.foreach遍歷
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set.add("愚"); set.add("生"); set.add("淺"); set.add("末"); for (String s : set) { System.out.println(s); } }
結果:
Map介面是雙列集合的頂層介面,下面是Map介面的定義
interface Map<K,V> K:鍵的型別;V:值的型別
儲存的資料必須包含key和value。
key和value在Map集合中是一一對應的關係。一個key對應一個value。
key在map集合中是不會重複的。
HashMap集合的特點
HashMap<key的資料型別,value的資料型別> map = new HashMap<>();
例如:
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); HashMap<String,Integer> map = new HashMap<>(); }
方法 | 解釋 |
---|---|
V put(K key, V value) | 新增元素,如果key不存在就新增,如果key |
V get(Object key) | 根據key獲取對應的value值返回。如果key不存在就返回null |
V remove(Object key) | 根據key刪除map中對應的鍵值對。並且把刪除的value返回 |
boolean containsKey(Object key) | 判斷key是否存在 |
int size() | 集合中鍵值對的對數 |
void clear() | 清空集合中的所有鍵值對 |
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); // map.put() //新增元素 map.put("name", "愷龍"); map.put("age", "20"); String v = map.put("name", "愚生淺末");//將原來的愷龍替換為愚生淺末 String name = map.get("name");//獲取名字:愷龍 String age = map.get("age");//獲取age:20 //刪除元素 String delV = map.remove("age");//返回值為20 //判斷key是否存在 if(map.containsKey("name")){ String agea = map.get("name");//null System.out.println(agea.length()); } //size int size = map.size(); map.clear(); }
1.使用entrySet遍歷
map集合的entrySet方法可以獲取一個Set集合,集合中存放的是Entry物件,一個Entry物件相當於一個鍵值對。我們可以遍歷set集合拿到Entry物件,然後獲取出裡面的鍵和值。
使用迭代器遍歷entrySet
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); map.put("name","愷龍"); map.put("age","20"); Set<Map.Entry<String, String>> entries = map.entrySet(); //使用迭代器遍歷entrySet Iterator<Map.Entry<String, String>> it = entries.iterator(); while (it.hasNext()){ Map.Entry<String, String> entry = it.next(); System.out.println(entry.getKey()+"="+entry.getValue()); } }
結果:
使用foreach遍歷entrySet
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); map.put("name","愷龍"); map.put("age","20"); Set<Map.Entry<String, String>> entries = map.entrySet(); //使用foreach遍歷entrySet for (Map.Entry<String, String> entry : entries) { System.out.println(entry.getKey()+"="+entry.getValue()); } }
結果:
2.使用keySet遍歷
map集合的keySet方法可以獲取一個Set集合,集合中存放的是所有的key。我們可以遍歷set集合拿到key物件,然後通過key獲取對應的value。
public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); map.put("name","愷龍"); map.put("age","20"); Set<String> keys = map.keySet(); for (String key : keys) { System.out.println(key+"="+map.get(key)); } }
結果:
HashMap在新增元素的時候會判斷集合中是否有key和本次存入的key相同。判斷的時候主要是通過hashCode方法和equals方法來進行判斷的。hashCode相同,並且equals判斷也相同就會認為是同一個key。
所以如果我們要儲存到HashMap中的key是一個自定義的型別。就需要根據情況判斷下是否需要重寫下hashCode方法和equals方法。重寫的時候使用IDEA的提示即可。
public class Student { private int age; private String name; public String getName(){ return name = this.name; } public void setName(String name){ this.name = name; } public int getAge(){ return age = this.age; } public void setAge(int age){ this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } @Override public int hashCode() { return Objects.hash(age, name); } }
注意:HashSet儲存資料其實也是使用了HashMap。所以如果往HashSet中儲存自定義物件也要看情況是否需要重寫hashCode方法和equals方法。
以上就是Java常用集合之Set和Map的用法詳解的詳細內容,更多關於Java Set Map集合的資料請關注it145.com其它相關文章
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45