0201 map接口

Map接口特点:

(1)Map接口中的数据存储是以键值对方式存在

(2)collection是单列集合,Map是双列集合

(3)Map中不允许存在相同的键值,但value值是可以重复的

(4)Map接口中常用的集合有HashMap集合和LinkedHashMap集合

Map中常用的方法

put(k key,v value);将k键的key,v的value值存入集合中

get(k key);得到key键的value值

remove(k key );将k键为key的数据条删除

代码展示:

public class Demo01 {

	public static void main(String[] args) {
		//创建map集合
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		//存值
		map.put("喜洋洋",18);
		map.put("美羊羊",19);
		map.put("美羊羊",20);
		//删除
		map.remove("喜洋洋");
		//取值
		System.out.println(map.get("喜洋洋"));
		System.out.println(map.get("美羊羊"));	
	}

}

  运行结果为:

null
20

Map中遍历方法

1、getkey()方法,该方法返回一个所有key所在的set集合,得到set集合后,可以用增强for或用迭代器去遍历这个set集合就可以了

例:用增强for遍历

public class Demo02 {

	public static void main(String[] args) {
		HashMap<String, String> map=new HashMap<String, String>();
		map.put("小白", "java1127");
		map.put("小黑", "java1128");
		map.put("小兰", "java1129");
		//1.keyset方法
		//现获取key所在的set集合
		Set<String> set=map.keySet();
		//增强for遍历
		for(String s:set){
			System.out.println(s+"...."+map.get(s));
		}
		
	}
}

 例:用迭代器遍例

public class Demo02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		HashMap<String, String> map=new HashMap<String, String>();
		map.put("小白", "java1127");
		map.put("小黑", "java1128");
		map.put("小兰", "java1129");
		//1.keyset加迭代器
		Set<String> set=map.keySet();
		Iterator<String> it=set.iterator();
		while(it.hasNext()){
			String key=it.next();
			System.out.println(key+"..."+map.get(key));
		}
		
	}
}

 

2、entrySet()方法,该方法返回一个存着键值对的set集合,(键值对集合:Map.entry<K,V>,entry<K,V>是map接口中用static修饰的内部类,该类中有独有的获取键和值的方法:getKey(),getValue(),这两个方法可以获取键值对的键和值)

例:用增强for方法,遍例键值对

public class Demo02 {

	public static void main(String[] args) {
		HashMap<String, String> map=new HashMap<String, String>();
		map.put("小白", "java1127");
		map.put("小黑", "java1128");
		map.put("小兰", "java1129");
		//2Entryaet对象
		//获取所有结婚证所在的set集合
		Set<Map.Entry<String, String>> set=map.entrySet();
		//遍历set集合
		for(Map.Entry<String, String> entry:set){
			System.out.println(entry.getKey()+"..."+entry.getValue());
		}
	}
}

  例:用迭代器,遍例键值对

public class Demo02 {

	public static void main(String[] args) {
		HashMap<String, String> map=new HashMap<String, String>();
		map.put("小白", "java1127");
		map.put("小黑", "java1128");
		map.put("小兰", "java1129");
		//3.迭代器
		//获取所有结婚证所在的set集合
		Set<Map.Entry<String, String>> set=map.entrySet();
		//获取迭代器对象
		Iterator<Map.Entry<String, String>> it=set.iterator();
		//遍历
		while(it.hasNext()){
			Map.Entry<String, String> entry=it.next();
			System.out.println(entry.getKey()+"..."+entry.getValue());
		}
	}
}

  Map集合中我们要存储自定义类对象时,要在自定义类中重写equls方法和hashcode方法。

例:自定义Person类

public class Person {

	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;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Person() {
		super();
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
}

public class Demo03 {
	public static void main(String[] args) {
		HashMap<Person, String> map=new HashMap<Person, String>();
		//存值
		map.put(new Person("小红",18), "java1127");
		map.put(new Person("小黑",19), "java1128");
		map.put(new Person("小黑",19), "java1128");
		//entryset加增强for
		Set<Map.Entry<Person, String>> set=map.entrySet();
		for(Map.Entry<Person, String> entry:set){
			System.out.println(entry.getKey()+".."+entry.getValue());
		}
	}

}

  

posted @ 2021-02-01 10:50  公雪  阅读(108)  评论(0编辑  收藏  举报