JAVA笔记:Java 类集总结(二、Map接口及相关)

Map接口

与Collection接口不同的是,Map接口保存的对象是一对对,类似key-value这样的分布。

Map接口的常用子类:

以HashMap为例使用Map:

import java.util.HashMap ;
import java.util.Map ;
public class HashMapDemo01{
	public static void main(String args[]){
		Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
		map = new HashMap<String,String>() ;
		map.put("mldn","www.mldn.cn") ;	// 增加内容
		map.put("zhinangtuan","www.zhinangtuan.net.cn") ;	// 增加内容
		map.put("mldnjava","www.mldnjava.cn") ;	// 增加内容
		String val = map.get("mldn") ;	// 根据key取出值
		System.out.println("取出的内容是:" + val) ;
	}
};

HashMap与Hashtable的区别:

Map接口的输出

对于Map接口来说,不能直接使用迭代(Iterator,foreach)输出,因为Map中存放的是一对值,如果此时要使用迭代输出,则必须按照如下步骤:

1.将Map的实例entrySet()方法变为Set接口对象;

2.通过Set接口实例化为Iterator实例化

3.通过Iterator迭代输出,每个内容都是Map.Entry的对象

4.通过Map.Entry进行key-value 的分离

import java.util.HashMap ;
import java.util.Map ;
import java.util.Set ;
import java.util.Iterator ;
public class IteratorDemo04{
	public static void main(String args[]){
		Map<String,String> map = null; // 声明Map对象,其中key和value的类型为String
		map = new HashMap<String,String>() ;
		map.put("mldn","www.mldn.cn") ;	// 增加内容
		map.put("zhinangtuan","www.zhinangtuan.net.cn") ;	// 增加内容
		map.put("mldnjava","www.mldnjava.cn") ;	// 增加内容
		Set<Map.Entry<String,String>> allSet = null ;
		allSet = map.entrySet() ;
		Iterator<Map.Entry<String,String>> iter = null ;
		iter = allSet.iterator() ;
		while(iter.hasNext()){
			Map.Entry<String,String> me = iter.next() ;
			System.out.println(me.getKey() + " --> " + me.getValue()) ;
		}
	}
};

IdentityHashMap类

使用HashMap的时候,key的内容是不能重复的,意思就是相同的key的存放地址一样,如果要重复使用,则要使用IdentityHashMap类。

import java.util.IdentityHashMap ;
import java.util.Set ;
import java.util.Iterator ;
import java.util.Map ;
class Person{
	private String name ;
	private int age ;
	public Person(String name,int age){
		this.name = name ;
		this.age = age ;
	}
	public boolean equals(Object obj){
		if(this==obj){
			return true ;
		}
		if(!(obj instanceof Person)){
			return false ;
		}
		Person p = (Person)obj ;
		if(this.name.equals(p.name)&&this.age==p.age){
			return true ;
		}else{
			return false ;
		}
	}
	public int hashCode(){
		return this.name.hashCode() * this.age ;
	}
	public String toString(){
		return "姓名:" + this.name + ",年龄:" + this.age ;
	}
};
public class IdentityHashMapDemo02{
	public static void main(String args[]){
		Map<Person,String> map = null ;	// 声明Map对象
		map = new IdentityHashMap<Person,String>() ;
		map.put(new Person("张三",30),"zhangsan_1") ;	// 加入内容
		map.put(new Person("张三",30),"zhangsan_2") ;	// 加入内容
		map.put(new Person("李四",31),"lisi") ;	// 加入内容
		Set<Map.Entry<Person,String>> allSet = null ;	// 准备使用Set接收全部内容
		allSet = map.entrySet() ;
		Iterator<Map.Entry<Person,String>> iter = null ;
		iter = allSet.iterator() ;
		while(iter.hasNext()){
			Map.Entry<Person,String> me = iter.next() ;
			System.out.println(me.getKey() + " --> " + me.getValue()) ;
		}
	}
};

SortedMap接口

本接口可以用来排序。

实例:

import java.util.Map ;
import java.util.SortedMap ;
import java.util.TreeMap ;
public class SortedMapDemo{
	public static void main(String args[]){
		SortedMap<String,String> map = null ;
		map = new TreeMap<String,String>() ;	// 通过子类实例化接口对象
		map.put("D、jiangker","http://www.jiangker.com/") ;
		map.put("A、mldn","www.mldn.cn") ;
		map.put("C、zhinangtuan","www.zhinangtuan.net.cn") ;
		map.put("B、mldnjava","www.mldnjava.cn") ;
		System.out.print("第一个元素的内容的key:" + map.firstKey()) ;
		System.out.println(":对应的值:" + map.get(map.firstKey())) ;
		System.out.print("最后一个元素的内容的key:" + map.lastKey()) ;
		System.out.println(":对应的值:" + map.get(map.lastKey())) ;
		System.out.println("返回小于指定范围的集合:") ;
		for(Map.Entry<String,String> me:map.headMap("B、mldnjava").entrySet()){
			System.out.println("\t|- " + me.getKey() + " --> " + me.getValue()) ;
		}
		System.out.println("返回大于指定范围的集合:") ;
		for(Map.Entry<String,String> me:map.tailMap("B、mldnjava").entrySet()){
			System.out.println("\t|- " + me.getKey() + " --> " + me.getValue()) ;
		}
		System.out.println("部分集合:") ;
		for(Map.Entry<String,String> me:map.subMap("A、mldn","C、zhinangtuan").entrySet()){
			System.out.println("\t|- " + me.getKey() + " --> " + me.getValue()) ;
		}
	}
};

Stack类

Stack是栈的操作类,栈的使用方法不用多说,后进先出。Stack类是Vector类的一个子类。

实例:

import java.util.Stack ;
public class StackDemo{
	public static void main(String args[]){
		Stack<String> s = new Stack<String>() ;
		s.push("A") ;	// 入栈
		s.push("B") ;	// 入栈
		s.push("C") ;	// 入栈
		System.out.print(s.pop() + "、") ;
		System.out.print(s.pop() + "、") ;
		System.out.println(s.pop() + "、") ;
		System.out.println(s.pop()) ;
	}
};

Properties类

属性是开发中常见的一种形式,Properties类就是专门用来完成属性的操作类。

实例:

import java.util.Properties;
public class PropertiesDemo01{
	public static void main(String args[]){
		Properties pro = new Properties() ;	// 创建Properties对象
		pro.setProperty("BJ","BeiJing") ;	// 设置属性
		pro.setProperty("TJ","TianJin") ;
		pro.setProperty("NJ","NanJing") ;
		System.out.println("1、BJ属性存在:" + pro.getProperty("BJ")) ;
		System.out.println("2、SC属性不存在:" + pro.getProperty("SC")) ;
		System.out.println("3、SC属性不存在,同时设置显示的默认值:" + pro.getProperty("SC","没有发现")) ;
	}
};

时间: 2024-10-25 07:57:17

JAVA笔记:Java 类集总结(二、Map接口及相关)的相关文章

Java类集(List,Vector,map……) (1)

1.1在介绍类集框架之前,先来思考这样一个问题,如果现在要保存一组对象,按照初级的做法只能使用对象数组,但是使用对象数组操作本身有一个限制,就是数组有长度的限制:而通过一些数据结构的操作,如链表,则可以完成动态对象数组的操作,但是这些如果全部由开发人员来做,肯定非常麻烦. 类集框架恰好解决了以上问题,所谓的类集就是一个动态的对象数组,是对一些实现好的数据结构进行了包装,这样在使用时就会非常方便,而且最重要的是类集框架本身不受对象数组长度的限制. 类集框架被设计成拥有以下几个特性: 1.这种框架是

第41节:Java当中的类集框架

Java当中的类集框架 类集框架,那么什么是类集框架,集合的种类有哪些,类集框架的基础结构. 类集框架是一组类和接口的集合,位于java.util包当中,是用来用户存储和管理对象的,在这个类集合框架中,我们主要学习的为三大类,分别是集合,列表和映射. 集合,列表,映射 Set为集合,在集合中的对象是不按照顺序排列的,并且是没有重复的对象的.简单为:无序,无重复. List为列表,中在列表中的对象是由顺序的排序的,并且是有重复的对象. Map为映射,在集合中的每个元素都有一个键对象和一个值对象,在

java笔记--超级类Object多线程的应用+哲学家进餐算法内部类与多线程结合

关于Object类中的线程方法: Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notifyAll(),wait(),这几个方法都是用来控制线程的运行状态的. 方法列表如下: notify() : 唤醒在此对象监视器上等待的单个线程 notifyAll() : 唤醒在此对象监视器上等待的所有线程 wait() : 在其他线程时调用此对象的notify()或者notifyAll()方法前,

java笔记--String类对象解析与运用

1.String中的equals和==的区别 String是对象而非基本数据类型,不能使用"=="来判断两个字符串是否相当, 判断两个字符串内容是否相同用equals(); 判断两个字符串内存地址是否相同用"==" 2.startsWith(String str): 判断字符串是否以str为前缀 3.endsWith(String str): 判断字符串是否以str为后缀 4.String 字符串的比较: 1).compareTo()和compareToIgnore

java笔记--String类格式化当天日期转换符文档

String类格式化当天日期 转换符:%tb : 格式化为月份的英文缩写%tB : 格式化为月份的英文全写%ta : 格式化为星期%tA : 格式化为星期%ty : 格式化为两位年份值%tY : 格式化为四位年份值%tm : 格式化为两位月份值%td : 格式化为两位日期值%te : 格式化为星期一位日期值%tH : 格式化为两位24时制小时值(00-23)%tk : 格式化为两位24时制小时值(0-23)%tI : 格式化为两位12时制小时值(01-12)%tl : 格式化为两位12时制小时值

Java集合框架总结(5)——Map接口的使用

Java集合框架总结(5)--Map接口的使用 Map用于保存具有映射关系的数据(key-vlaue).Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false Map中包含了一个keySet()方法,用于返回Map所以key组成的Set集合. Map集合与Set集合元素的存储形式很像,如Set接口下有HashSet.LinkedHashSet.SortedSet(接口).TreeSet.EnumSet等实现类和子接口,而Map接口下则有HashMa

java中的类集框架

1.什么是类集框架 1.是一组类和接口 2.位于java.util包当中 3.主要用于用户存储和管理对象 4.主要分为三大类——集合.列表和映射 2.类集框架图 虚线框的表示接口,实线框的表示实现类 Collection接口中的主要方法 Iterator中的主要方法是hasnext()和next()方法 例子: 3.Map和HashMap的使用方法‘ 什么是映射 4.JDK帮助文档的使用方法

java中的类集

首先得明白什么叫做类集,以及它的作用是什么? 类集实际上就是一个动态的对象数组,有人就会问了,不是有数组了吗?还要类集干嘛呢,其实啊,一般的数组都有一个长度的限制不,类集就是专门来解决这种限制的,使用类集可以很方便的向数组中增加任意多个数据,是很容易进行扩展和修改的. 我们来了解了解类集的架构,所有类集操作都存放在java.util包中: Collection接口是保存单值集合的最大父接口,但是在一般的开发中,都不直接用Collection进行开发(操作意义不明确),而是使用其子接口进行开发.

Java基础面试题集(二)

Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 2)继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类). 3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向