java 集合框架之映射集

从Map接口继承而来或者实现来的,称为映射集。Map是键/值的集合,元素都成对出现,键和值都是对象,键对象用来在Map中标识一个值对象,键不能重复出现。

Map接口的常用方法:

	public void clear() {}
	public Object put(Object key, Object value) {}
	public boolean containsKey(Object key) {}
	public boolean containsValue(Object value) {}
	public Object get(Object key) {}
	public Set entrySet() {}
	public void putAll(Map arg0) {	}
	public Object remove(Object arg0) {}
	public int size() {}
	public Collection values() {}
	public boolean isEmpty() {}
	public Set keySet() {
HashMap类:

该类通过键计算哈希码,来确定值的存储,该类的键值允许为Null,但只能出现一次。

HashMap不能保证存储顺序,如果对相同key的元素进行put,则会替代掉原先这个key的值。

Hashtable类:

与HashMap基本相同,但是Hashtable对元素的操作是同步的,在运行的时候可能有一些性能损失。注意这里的 t 要小写。

LinkedHashMap类:

是一个ordered类型的Map,键按照插入集合的顺序存储。基本功能和HashMap类似,遍历效率比HashMap高,插入删除效率比HashMap低。


SortedMap接口和TreeMap类

SortedMap接口继承自Map类能够按照键天然顺序排序,其中的元素必须实现键的比较器comparable。这里排序比较器都是针对键的。

package array;

import java.util.Comparator;
import java.util.TreeMap;

//自己实现一个比较器,对整数类型的key进行倒序排序
class MyCompara implements Comparator{
	
	public int compare(Object o1, Object o2) {
		// TODO Auto-generated method stub
		Integer i1=(Integer)o1;
		Integer i2=(Integer)o2;
		return i2.intValue()-i1.intValue();
	}
	
}

public class MapTest {
	public static void main(String[] args){
		TreeMap tmNoCompara=new TreeMap();
		TreeMap tmCompara=new TreeMap(new MyCompara());
		tmNoCompara.put(1, "hahah");
		tmNoCompara.put(3, "goppd");
		tmNoCompara.put(2, "yes");
		System.out.println(tmNoCompara);
		
		tmCompara.put(1,"eugd");
		tmCompara.put(2,"fdsg");
		tmCompara.put(3,"gshdf");
		System.out.println(tmCompara);
		

	}
}
没有比较器的是按照key=1,2,3的顺序输出的,有比较器的是按照key=3,2,1输出的。

遍历映射一般是先对键进行遍历,然后按照键对值进行遍历。

Map中有获取键或值得集合的方法:

public Set keySet(0;

public Collection values();

键的返回集合是Set集合我认为是因为 其中键是不可以重复的,Setj集合中的元素不能重复。

比如遍历一个HashMap

先创建一个Set类获取HashMap的keySet;

获取KeySet的迭代器Iterator;

遍历迭代器获取到每一个key,并强制转型为相应key的类型

用HashMap的get方法,通过Key获取Value,再把Value进行相应类型转换。完成遍历

也可以直接使用 HashMap的values获取值得集合

在使用foreach或者迭代器,对值得集合进行遍历,但是这样得不到键和值得对应关系。

下一篇写JAVA中栈的实现,集合元素的常用操作方法,泛型的使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值