第六章 集合(三)

6.5 Map接口

 6.5.1 Map接口简介

  Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。

Map接口的常用方法
方法声明功能描述
void out(Object key,Object Value)将指定的值与此映射中的指定键关联(可选操作)
Object get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回nul
void clear()删除所有的键值对元素
V remove (Object key)根据键删除对应的值,返回被删除的值
int size()返回集合中的键值对的个数
boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回true
boolean containsValue(Object value)如果此映射将一个或多个键映射到指定值,则返回true
Set keySet()返回此映射中包含的键的Set视图
Collection<V>values()返回此映射中包含的值的Collection视图
Set<Map.Entry<K,V>>entrySet()返回此映射中包含的映射关系的Set视图

 6.5.2 HashMap集合

  HashMap集合是zhiMap接口的一个实现类,用于存储键值映射关系,但 HashMap集合没有重复的键且键值无序。

案例学习6—14

import java.util.*;
public class Example14{
	public static void main(String[] args) {
		HashMap map=new HashMap();
		map.put("1", "张三");//创建Map对象
		map.put("2", "李四");//存储键和值
		map.put("3", "王五");
		System.out.println("1:"+map.get("1"));//根据键获取值
		System.out.println("2:"+map.get("2"));
		System.out.println("3:"+map.get("3"));
	}
}

  运行结果→

1:张三

2:李四

3:王五

  6.5.3 TreeMap集合

  为了对集合中的元素的键值进行排序,Map接口提供了另一个可以对集合中元素键值进行排序的类TreeMap。

案例学习6—19

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;
public class Example19{
	public static void main(String[] args) {
		TreeMap map=new TreeMap();//创建Map集合
		map.put(3,"李四");//存储键和值
		map.put(2,"王五");
		map.put(4,"赵六");
		map.put(3,"张三");
		Set keySet=map.keySet();
		Iterator it=keySet.iterator();
		while (it.hasNext()) {
			Object key=it.next();
			Object value=map.get(key);//获取每个键所对应的值
			System.out.println(key+":"+value);
		}
	}
}

  运行结果→

2:王五

3:张三

4:赵六

  TreeMap集合之所以可以对添加的元素的键值进行排序,其实现同TreeMap一样,TreeMap的排序也分为自然排序和比较排序两种。

案例学习6—20

import java.awt.font.TextMeasurer;
import java.util.*;
class Student{
	private String name() ;
	private int age;
	public String getname() {
		return name;
	}
	public void setname(String name) {
		this.name=name
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age=age;
	}
	public Student(String name,int age) {
		super();
		this.name=name;
		this.age=age;
	}
	@Override
	public String toString() {
		return"student[name="+name+",age="+age+"]";
	}
}
public class Example20{
	public static void main(String[] args) {
		TreeMap tm=new TreeMap(new Comparator<Student>() {
			@Override
			public int compare(Student s1,Student s2) {
				int num=s1.getName().compareTo(s2.getName());//按照姓名比较
				return num==0 ? num:s1.getAge()-s2.getAge();
			}
		});
		tm.put(new Student("张三", 23),"北京");
		tm.put(new Student("李四", 13),"上海");
		tm.put(new Student("王五", 43),"深圳");
		tm.put(new Student("赵六", 33),"广州");
		Set keySet=tm.keySet();
		Iterator it=keySet.iterator();
		while(it.hasNext()) {
			Object key=it.next();
			Object value=tm.get(key);//获取每个键所对应的值
			System.out.println(key+":"+value);
		}
	}
}

 运行结果→

Student [ name=李四,age=13]:上海

Student [ name=张三,age=23]:北京

Student [ name=王五,age=33]:广州

Student [ name=赵六,age=43]:深圳

6.5.4 Propertie集合

  Map接口中还有一个实现类Hashtable,它与HashMap十分相似,区别在于Hashtable是线程安全的,Hashtable存取元素时速度很慢,目前基本被HashMap类所取代,但Hashtable类的子类Propertie在实际应用中非常重要。

案例学习6—21

import java.util.*;
public class Example21{
	public static void main(String[] args) {
		Properties p=new Properties();//创建properties对象
		p.setProperty("Backgroup-color", "red");
		p.setProperty("Font-size", "14px");
		p.setProperty("Language", "chinese");
		Enumeration names=p.propertyNames();//获取Enumeration对象所有键的枚举
		while (names.hasMoreElements()) {//循环遍历所有的键
			String key=(String)names.nextElement();
			String value=p.getProperty(key);//获取对应键的值
			System.out.println(key+"="+value);
		}
	}
}

 运行结果→

Language=Chinese

Backgroup-color=red

Font-size=14px

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值