内容
1.HashMap中常用方法使用
2.Properties使用简单介绍
3.SortedMap使用介绍
在正式讲解之前,还是把Map继承结构图拿出来,还是很重要。
一.HashMap中常用方法使用
- Object put(Object key,Object value)这个是向集合中添加键值对
- boolean containsKey(Object key) 判断Map中是否包含这样的Key
- boolean containsValue (Object value)判断Map中是否包含这样的value
- Object get(Object key)通过key获取value
- Collection values()获取Map集合中所有的value
- Set keySet()获取Map中所有的key
- set entrySet()返回此映射中包含的映射关系的Set试图
package 对象;
import java.util.*;
/*
* Object put(Object key,Object value)这个是向集合中添加键值对
* boolean containsKey(Object key) 判断Map中是否包含这样的Key
* boolean containsValue (Object value)判断Map中是否包含这样的value
* Object get(Object key)通过key获取value
* Collection values()获取Map集合中所有的value
* Set keySet()获取Map中所有的key
* set entrySet()返回此映射中包含的映射关系的Set试图
* */
public class 测试程序 {
public static void main(String[] args) {
//1.创建Map集合
Map persons = new HashMap();//HashMap的默认初始化容量是16,默认加载因子是0.75
//2.存储键值对
persons.put("10000","Jack");
persons.put("10000","Smith");
persons.put("10002","Sun");
persons.put("10003","Lucy");
persons.put("10004","John");
persons.put("10005","Me");
//注意:存储在Map集合key部分的元素需要同时重写hashCode和equals方法。
//在这里key是字符串String,已经重写了这两个方法了
//3.判断键值对的个数
//Map中的key是不可重复的,和HashSet相同
System.out.println(persons.size());//输出5
//4.判断集合中是否包含这样的key
System.out.println(persons.containsKey("10000"));//输出true
//5.判断集合中是否包含这样的value
System.out.println(persons.containsValue("Smith"));//也输出true
//所以可以得出一个结论:Map中如果key重复了,value采用的是"覆盖"。
//比如上面Jack和Smitch都是10000,Smith把Jack覆盖了
//验证
System.out.println(persons.containsValue("Jack"));//输出false
//6.通过key获取value
Object v = persons.get("10003");
System.out.println(v);//输出Lucy
//7.通过key删除键值对
persons.remove("10003");
System.out.println(persons.size());//输出4
//8.获取所有的value
Collection values = persons.values();
Iterator it = values.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//9.获取所有的key
//遍历Map集合
Set keys = persons.keySet();
Iterator it2 = keys.iterator();
while(it2.hasNext()) {
Object id = it2.next();
Object name = persons.get(id);
System.out.println(id + "-->" + name);
}
/*
* 输出
* 10000-->Smith
10002-->Sun
10004-->John
10005-->Me
*/
//10.entrySet
//将Map转换成Set集合(这个用的不多)
Set entrySet = persons.entrySet();
Iterator it3 = entrySet.iterator();
while(it3.hasNext()) {
System.out.println(it3.next());
}
/*
* 输出 10000=Smith
10002=Sun
10004=John
10005=Me
*/
}
}
二.Properties使用简单介绍
1.Properties的父类Hashtable默认初始化容量是11,默认加载因子是0.75
2.java.util.properties 也是由key和value组成。但是key和value都是字符串类型
package 对象;
import java.util.*;
public class 测试程序 {
public static void main(String[] args) {
//1.创建属性类对象
Properties p = new Properties();
//2.存入数据
p.setProperty("1", "01");
p.setProperty("2", "02");
p.setProperty("3", "03");
p.setProperty("4", "04");
//注意:key不能重复,如果重复则value覆盖
//3.取,通过key获取value
String v1 = p.getProperty("1");
String v2 = p.getProperty("2");
String v3 = p.getProperty("3");
String v4 = p.getProperty("4");
//4.输出
System.out.println(v1);
System.out.println(v2);
System.out.println(v3);
System.out.println(v4);
/*
* 输出
* 01
02
03
04
*/
}
}
三.SortedMap使用介绍
1.SortedMap中的key特点:无序不可重复,但是存进去的元素可以按照大小自动排列.SortedMap中的key等同于SortedSet
2.如果想自动排序,key部分的元素需要:实现Comparable接口或者单独写一个比较器
package 对象;
import java.util.*;
public class 测试程序 {
public static void main(String[] args) {
//1.Map,key存储product,value存储重量
SortedMap products = new TreeMap();
//2.创建对象
Product p1 = new Product("西瓜",1.0);
Product p2 = new Product("苹果",2.0);
Product p3 = new Product("桃子",3.0);
Product p4 = new Product("香蕉",4.0);
//3.添加
products.put(p1, 8.0);
products.put(p2, 2.0);
products.put(p3, 3.0);
products.put(p4, 9.0);
//4.遍历
Set keys = products.keySet();
Iterator it = keys.iterator();
while(it.hasNext()) {
Object k = it.next();
Object v = products.get(k);
System.out.println(k+"-->"+v+"kg");
}
/*
* 输出
* name = 西瓜,price = 1.0-->8.0kg
name = 苹果,price = 2.0-->2.0kg
name = 桃子,price = 3.0-->3.0kg
name = 香蕉,price = 4.0-->9.0kg
*/
}
}
//创建类,实现Comparable接口
class Product implements Comparable{
String name;
double price;
Product(String name,double price){
this.name = name;
this.price = price;
}
//重写toString方法
public String toString() {
return "name = "+name+",price = "+price+"";
}
//重写compareTo方法
//需求,按照商品价格排序
public int compareTo(Object o) {
double price1 = this.price;
double price2 = ((Product)o).price;
if(price1 < price2) {
return -1;
}else if(price1 > price2) {
return 1;
}else {
return 0;
}
}
}