IT评测·应用市场-qidao123.com
标题:
java -- Map接口和可变参数
[打印本页]
作者:
冬雨财经
时间:
2023-4-11 19:14
标题:
java -- Map接口和可变参数
Map
Map: 映射, 是双列集合顶层接口
java.util.Map
k: key 键 唯一
v: value 值 可重复
常用方法和Entry
public V put(K key,V Value)
// 指定的键与指定值添加到Map集合中, 添加成功返回null, 添加失败返回之前的值
public V putIfAbsent(K key,V Value)
// jdk1.8后新增 键相同值不覆盖返回原来的值
public V get(Object key)
// 根据指定的键, 获取对应值, 不存在返回null
public V getOrDefault(Object key, V defaultValue)
// jdk1.8后新增 不存在返回defaultValue
public boolean containsKey(Object key)
// 判断集合中是否包含指定的键
public V remove(Object key)
// 根据指定的键, 删除一对元素, 返回被删除的值
public V remove(Object key, Object value)
// 根据指定的键和值, 都一致则删除, 返回被删除的值
Set<K> keySet()
// 获取存放所有键的Set集合
Collection<V> values()
// 获取存放所有值的集合
Set<Map.Entry<K, V>> entrySet()
// 获取键值对映射关系对象的Set集合
interface Entry<K,V>
K getKey()
// 获取映射关系对象中的键
V getValue()
// 获取映射关系对象中的值
复制代码
LinkedHashMap
底层数据结构: 链表 + 哈希表
链表保证元素有序 哈希表保证元素唯一
public class Demo {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("1张三",14);
map.put("2李四",17);
// put
// 添加成功返回 null
System.out.println(map.put("3王五", null));
// 添加失败返回之前的值, 并用新值覆盖
System.out.println(map.put("2李四", 19));
// putIfAbsent
// 键不存在添加新的键值对, 添加成功返回null
System.out.println(map.putIfAbsent("4刘六", 19));
// 若键存在 原有值不改变 并返回原有值
System.out.println(map.putIfAbsent("1张三", 11));
// get
// 根据键找值, 存在则返回键对应的值
System.out.println(map.get("1张三"));
// 不存在则返回null
System.out.println(map.get("2"));
// getOrDefault
// 键存在 返回对应值
System.out.println(map.getOrDefault("1张三", -1));
// 若不存在 则返回defaultValue
System.out.println(map.getOrDefault("2", -1));
// 判断集合中是否包含指定的键, 存在返回true, 不存在返回false
System.out.println(map.containsKey("2李四"));
// 根据键删除一对元素 返回被删除的值
// 不存在则返回null
System.out.println(map.remove("1"));
System.out.println(map.remove("1张三"));
System.out.println(map);
// 遍历
// 方式1
// 获取存放所有键的集合
Set<String> set = map.keySet();
// 获取存放所有值的集合
Collection<Integer> values = map.values();
// 迭代器
Iterator<Integer> iterator = values.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
// 增强for
for (Integer value : values) {
System.out.print(value + " ");
}
System.out.println();
// 迭代器
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String key = it.next();
System.out.print(key + " = " + map.get(key) + "\t");
}
System.out.println();
// 增强for
for (String s : set) {
System.out.print(s + " = " + map.get(s) + "\t");
}
System.out.println();
// 方式2
// Entry是Map的内部类 所以调用时需要Map.Entry
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
// 迭代器
Iterator< Map.Entry<String, Integer>> entries = entrySet.iterator();
while (entries.hasNext()) {
Map.Entry<String, Integer> next = entries.next();
System.out.print(next.getKey() + " = " + next.getValue() + "\t");
}
System.out.println();
// 增强for
for (Map.Entry<String, Integer> entry : entrySet) {
System.out.print(entry.getKey() + " = "+entry.getValue() + "\t");
}
}
}
复制代码
TreeMap
java.util.TreeMap
底层数据结构是红黑树 键 排序 具有唯一性 不允许null键 允许null值
[code]/* java.util.TreeMap 底层数据结构是红黑树 键 排序 具有唯一性 不允许null键 允许null值 构造方法: public TreeMap() 空参构建, 集合中的键必须实现自然排序接口 Comparable 的方法 CompareTo public TreeMap(Comparator
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4