Map集合框架:
java.util.Map :
1、定义:具有 key(键)-value(值)映射关系的集合。
2、Map和Collection的区别:Collection操作一个对象(key)
Map操作成对对象(key、value)
3、Map与Collection同级
|--HashMap :
1 特性与HashSet一样
2 Set底层实际使用的是HashMap,不过HashSet只操作了一个对象—>key值
3 HashMap的value可以重复,判断value时,只需通过 equals() 方法判断
4 是线程不安全的,所以效率高
|--LinkedHashMap :特性与LinkedHashSet一样
|--Hashtable :
1 是线程安全的,因此效率低。
2 不允许使用 null 作为 key 和 value
|--Properties : 用于操作属性文件
1 由于属性文件里只能写字符串。所以 Properties 里的 key 和 value 都是字符串类型
2 示例
@Test
public void test3() throws IOException{
//1. 创建 Properties 的实例
Properties props = new Properties();
//2. 通过 load(InputStream in) 方法与属性文件关联
props.load(new FileInputStream(new File("jdbc.properties"));
//3. 通过 getProperty(String key) 获取对应的 value
String userName = props.getProperty("username");
String password = props.getProperty("password");
System.out.println(userName);
System.out.println(password);
}
|--TreeMap : 根据 key 拥有指定的排序方式
1 特性与TreeSet一样
2 排序:
①自然排序(Comparable)
②定制排序(Comparator)
Map 的常用方法:
添加、删除操作:
Object put(Object key,Object value)
Object remove(Object key)
void putAll(Map t)
void clear()
元素查询的操作:
Object get(Object key)
boolean containsKey(Object key)
boolean containsValue(Object value)
int size()
boolean isEmpty()
boolean equals(Object obj):两集合必须一模一样才可为true
Map 的遍历:
Set keySet()
Set entrySet()
Map 的遍历
遍历 Map 的方式一:获取 Map 中所有的 key 组成的 Set——>keySet()
1)原理&思路:
1 Map 中取出的 key散列的,java把他们封装入Set中,提供给我们 Set keySet()
2 我们通过当前map调用keySet(),可得到封装好key的Set集合
3 再通过 增强for 遍历此Set集合。取出key
4 (注意:key是map的,Set是java帮我们封装散列的key)
5 key对应value。我们通过map.get(key);方法传入key获取对应的value
6 (注意:value与key的类型是add()时的类型)
7 为什么java把key封装入Set中而不是其他?
因key 不可重复,对应Set接口集合
2)示例:
Set set = map.keySet();
for (Object key : set) {
System.out.println(key);
Object value = map.get(key);
System.out.println(value);
}
System.out.println("-------------------------------------------------------------");
新·
遍历 Map 的方式二:获取 Map 中所有的 Entry组成的 Set——>entrySet();
1)原理&思路:
1 java把一个 key 和一个 value 组成一个 Entry类
2 java再从Map中创建这个entry内部类
3 java再把entry内部类封装进Set集合中,提供给我们 Set entrySet()
1 我们通过当前map调用entrySet(),可得到封装好的Set集合
2 再通过 增强for 遍历此Set集合。取出一个个entry
注意:entry是内部类的,默认得到的类型是Object
实际上是Entity类型因此要强转来调用Entity类中的get方法
3 再通过 entry提供访问的get方法 x.getKey()
entry提供访问的get方法 x.getValue()
取出一个个key、value
2)示例:
Set set2 = map.entrySet();
for(Object obj : set2){
Entry entry = (Entry) obj;
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + "=" + value);
}
System.out.println("-------------------------------------------------------------");
Iterator it2 = set2.iterator();
while(it2.hasNext()){
Entry entry = (Entry) it2.next();
【迭代器取得是对象,类型为Object。但是实际拿的是entry对。所以强转】
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + "==" + value);
System.out.println(entry);
}
}
}
网友评论