Java 集合框架主要包括两种类型的容器
一种是集合(Collection),存储一个元素集合。list线性列表属于Collection
List包括了 之前总结过的ArrayList 和 LinkedList
另一种是图(Map),Map 接口存储一组键值对象,提供key(键)到value(值)的映射
包括HashMap 笔者理解Map图有些像数学的函数 key 键值相当于x 值相当于y 一个x对应一个y,等一个y可以被很多个x所对应。
import java.util.HashMap; //导包
HashMap<String, String> map = new HashMap<String, String>();//初始化
HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。
添加元素put()方法
public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}
访问元素 get(key)方法
使用 get(key) 方法来获取 key 对应的 value(因为key是唯一的)
public V get(Object key) {
Node<K,V> e;
return (e = getNode(hash(key), key)) == null ? null : e.value;
}
删除元素remove(key)方法
使用 remove(key) 方法来删除 key 对应的键值对(key-value)
public V remove(Object key) {
Node<K,V> e;
return (e = removeNode(hash(key), key, null, false, true)) == null ?
null : e.value;
}
删除所有的键值对clear()
public void clear() {
Node<K,V>[] tab;
modCount++;
if ((tab = table) != null && size > 0) {
size = 0;
for (int i = 0; i < tab.length; ++i)
tab[i] = null;
}
}
计算大小 size()
public int size() {
return size;
}
迭代键值对或者值
// 输出 key 和 value
for (Integer i : list1.keySet()) {
System.out.println("key: " + i + " value: " + list1.get(i));
}
for(String value: list1.values()) {
// 输出每一个value
System.out.print(value + ", ");
}
例子:
HashMap<Integer, String> list1 = new HashMap<Integer, String>();
// 添加键值对
list1.put(1, "value1");
list1.put(2, "value2");
list1.put(3, "value3");
list1.put(4, "value4");
list1.remove(4);
System.out.println(list1);
System.out.println(list1.get(3));
System.out.println(list1.size());
//list1.clear();
// 输出 key 和 value
for (Integer i : list1.keySet()) {
System.out.println("key: " + i + " value: " + list1.get(i));
}
for(String value: list1.values()) {
// 输出每一个value
System.out.print(value + ", ");
}
计算结果
{1=value1, 2=value2, 3=value3}
value3
3
key: 1 value: value1
key: 2 value: value2
key: 3 value: value3
value1, value2, value3,