package cn.maplearn.demo;
public class Employee implements Comparable<Employee>{
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;
}
/**
* @param name
* @param age
*/
public Employee(String name, int age) {
super();
this.name = name;
this.age = age;
}
/**
*
*/
public Employee() {
super();
}
@Override
public String toString() {
return "Employee [name=" + name + ", age=" + age + "]";
}
@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;
Employee other = (Employee) 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;
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Employee o) {
int temp=this.age-o.age;
return temp==0? this.name.compareTo(o.name):temp;
}
}
package cn.maplearn.demo;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class EntryDemo {
/*
练习:学生对象(姓名,年龄)都有对应的归属地
key=Student value=String
*/
public static void main(String[] args) {
// 将学生和归属存储到HashMap集合中并取出,同姓名同年龄视为同一个学生
// Map<Employee, String> map=new HashMap<Employee, String> ();
// 自定义比较器
Comparator<Employee> comparator=new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
int temp=o1.getName().compareTo(o2.getName());
return temp==0?o1.getAge()-o2.getAge():temp;
}
};
// Map<Employee, String> map=new TreeMap<Employee, String> (comparator);//不传比较器就是按年龄排序
Map<Employee, String> map=new LinkedHashMap<Employee, String> ();//如果改成LinkedHashMap可以实现有序
map.put(new Employee("张三 ",25), "中国");
map.put(new Employee("王五 ",5457), "北京");
map.put(new Employee("李四 ",13), "乌克兰");//键不能保证唯一性了,需要修改hasCode()和equals()
map.put(new Employee("李四 ",13), "上海");
map.put(new Employee("赵六",13), "上海");
Set<Map.Entry<Employee, String>> entrySet=map.entrySet();
for (Map.Entry<Employee, String> employee : entrySet) {
Employee keEmployee=employee.getKey();
String value=employee.getValue();
System.out.println(keEmployee.getName()+":"+keEmployee.getAge()+"....."+value);
}
}
}
package cn.maplearn.demo;
import java.util.HashMap;
import java.util.Map;
public class MapDemo {
/*
Map:双列集合,一次存一对,键值对。要保证键的唯一性
共性的功能:
1、添加
v put(key,value);
putAll(Map<k,v> map);
2、删除
void clear();
v remove(key);
3、判断
boolean containsKey(object);
boolean containsValue(object);
boolean isEmpty();
4、获取
v get(key);
int size();
Map
|--Hashtable:哈希表,是同步的。不允许null键,null值
|--HashMap:哈希表,是不同步的,不允许null键,null值
|--TreeMap:二叉树,不同步的。可以对map集合中的键进行排序
*/
public static void main(String[] args) {
Map <Integer,String> map=new HashMap<Integer,String>();
methodDemo(map);
// 需求:map 集合中存储学号和姓名
}
public static void methodDemo(Map<Integer,String> map) {
// 存储键值对。如果键相同,会出现值覆盖
System.out.println(map.put(1, "张三"));
System.out.println(map.put(1, "二虎"));
map.put(3, "张三");
map.put(4, "李四");
System.out.println(map);
System.out.println(map.remove(1));
System.out.println(map);
}
}
entrySet
package cn.maplearn.demo;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.plaf.metal.MetalSplitPaneUI;
public class MapDemo2 {
/*
* 取出map 中所有元素 map 存储姓名-----归属地
*/
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("df", "张三");
map.put("as", "李四");
map.put("gas", "李四");
System.out.println(map.get("df"));
// keySet,取出所有的键,并存储到set集合中.map集合没有迭代器,但是可以将map集合转成set集合,再使用迭代器就解决了
Set<String> keySet = map.keySet();
for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) {
String key = iterator.next();
String value=map.get(key);
System.out.println(key+":"+value);
}
/*
// 演示entrySet Map.Entry其实就是一个Map接口中内部接口
Set<Map.Entry<String,String>> entrySet=map.entrySet();
for (Iterator<Map.Entry<String,String>> iterator = entrySet.iterator(); iterator.hasNext();) {
Map.Entry<String, String> entry = iterator.next();
String key=entry.getKey();
String value=entry.getValue();
System.out.println(key+":"+value);
}
*/
// 演示values()所有的值
Collection<String> values=map.values();
for (Iterator<String> iterator = values.iterator(); iterator.hasNext();) {
String value = iterator.next();
System.out.println(value);
}
}
}
interface MyMap{
// entry就是,map接口中的内部接口
public static interface MyEntry{
}
}
class MyDemo implements MyMap.MyEntry{
}
package cn.maplearn.demo;
public class NoWeekException extends RuntimeException {
/**
*
*/
public NoWeekException() {
super();
// TODO Auto-generated constructor stub
}
/**
* @param arg0
* @param arg1
* @param arg2
* @param arg3
*/
public NoWeekException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
super(arg0, arg1, arg2, arg3);
// TODO Auto-generated constructor stub
}
/**
* @param arg0
* @param arg1
*/
public NoWeekException(String arg0, Throwable arg1) {
super(arg0, arg1);
// TODO Auto-generated constructor stub
}
/**
* @param arg0
*/
public NoWeekException(String arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}
/**
* @param arg0
*/
public NoWeekException(Throwable arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}
}