Map
涉及到键值对的概念
通过key来找到value
key不能重复
import java.util.HashMap;
import java.util.Map;
public class Test2 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
//使用put插入键值对
map.put("及时雨","宋江");
map.put("花和尚","鲁智深");
map.put("行者","武松");
map.put("行者","武二郎");
map.put("鲁智深","花和尚");
System.out.println(map.isEmpty());
System.out.println(map.size());
//使用get根据key查找value
String value = map.get("及时雨");d
//Map 根据key找到value
//get方法如果key不存在,返回null
//getOrDefault表示key如果不存在就返回默认值
System.out.println(map.getOrDefault("小李广","花容"));
System.out.println(map.get("行者"));
}
}
遍历Map,打印所有的键值对(相对低效)
import java.util.HashMap;
import java.util.Map;
public class Test2 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
//使用put插入键值对
map.put("及时雨","宋江");
map.put("花和尚","鲁智深");
map.put("行者","武松");
map.put("行者","武二郎");
map.put("鲁智深","花和尚");
//获得到一个条目的集合,每个entry就是一个键值对
for(HashMap.Entry<String,String> entry : map.entrySet()){
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
false
4
鲁智深: 花和尚
行者: 武二郎
花和尚: 鲁智深
及时雨: 宋江
判断
System.out.println(map.containsKey("行者"));//高效的操作
System.out.println(map.containsValue("鲁智深"));//比较低效(遍历)
相对低效
public class Test11_18 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("及时雨","宋江");
map.put("黑旋风","李逵");
map.put("小李广","花荣");
//4打印所有的key
for(String key : map.keySet()){
System.out.println(key);
}
}
}
黑旋风
小李广
及时雨
//我们发现顺序好像和插入的顺序不一样,
TreeMap:底层是二叉搜索树,会按照key的大小关系来排序
HashMap:底层是哈希表,顺序是不确定的,取决于具体key的hash函数的实现
//相对低效
public class Test11_18 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("及时雨","宋江");
map.put("黑旋风","李逵");
map.put("小李广","花荣");
//打印所有的value
for (String value : map.values()){
System.out.println(value);
}
}
}
李逵
花荣
宋江
Set
针对Set的核心操作是判断key是否存在(数学上的集合)
Set<String> set = new HashSet<>();
//插入若干元素
set.add("C++");
set.add("Java");
set.add("Python");
set.add("PHP");
System.out.println(set.contains("C"));//效率高
false
迭代器进行遍历
迭代器是一种通用遍历集合类的方法。
Iterator是一个特殊的类,表示迭代器
Iterable是一个接口,表示可迭代的
必须要针对一个可迭代的对象(实现了Iterable接口的对象)才能使用迭代器来遍历
可迭代对象才能用for each
Iterator<String> it = set.iterator();//得到一个迭代器对象
while (it.hasNext()){
System.out.println(it.next());
}
Java
C++
PHP
本文深入探讨了Java中Map和Set的数据结构与操作方法,包括HashMap和HashSet的使用,键值对概念,以及如何遍历和操作这些集合。通过实例展示了Map的插入、查找和遍历,以及Set的元素添加和存在性检查。
1376

被折叠的 条评论
为什么被折叠?



