java中Map类测试总结

来源:互联网 发布:网络开发视频 编辑:程序博客网 时间:2024/09/21 09:23

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;


public class MapStu {
 /*Map:所有map容器的父接口
  *map存储的是键值对;map存储数据,是一对一对存的.(key,value)
  *HashMap:底层数组加链表
  *1.元素的排列顺序与存储的顺序无关
  *2.map中的键是不能重复的;(如果添加了相同键的键值对,以前的值被覆盖)
  *3.hashmap的键和值都可以为null,并且null作为键的时候作为唯一的对象来使用
  *api:
  *1.containsKey(Object key),containsKey(Object value):判断当前map内是否包含指定的键或者值
   2.remove(Object key):根据键删除某个指定的键值对 
   TreeMap:底层红黑树
   1.必须对键值对进行排序
   2.根据键的排序来决定键值对的顺序
   HashTable:线程安全的HashMap
   1.键和值都不能为null;
  */
 public static void main(String[] args)
 {
  demo4();
 }
 //map容器的元素添加
 public static void demo(){
  Map<String,Student> map = new HashMap<String,Student>();
  for (int i = 1; i < 6; i++)
  {
   //添加元素
   map.put("stu"+i,new Student("stu"+i,i+18));
  }
  System.out.println(map);
  //取值
  Student stu = map.get("stu1");
  System.out.println(stu);
  //containsKey(Object key)
  System.out.println(map.containsKey("stu2"));
  System.out.println(map.containsValue(new Student("stu1",19)));
  //remove
  map.remove("stu2");
  System.out.println(map.containsKey("stu2"));
 }
 //map的键不能重复
 public static void demo2(){
  Map<String,Student> map = new HashMap<String,Student>();
  Student stu1 = new Student("辛巴",5);
  Student stu2 = new Student("刀疤",5);
  map.put("狮子",stu1);
  map.put("狮子",stu2);
  System.out.println(map.get("狮子"));
  map.put(null,stu1);
  map.put("老虎", null);
  map.put(null,null);
  System.out.println(map.get("老虎"));
  System.out.println(map.get(null));
 }
 //hashMap的遍历
 public static void demo3(){
  Map<String,Student> map = new HashMap<String,Student>();
  for (int i = 1; i < 6; i++)
  {
   //添加元素
   map.put("stu"+i,new Student("stu"+i,i+18));
  }
  //entryset
  Set<Entry<String,Student>> entry = map.entrySet();
  for (Entry<String, Student> entry2 : entry)
  {
   System.out.println(entry2.getKey()+":"+entry2.getValue());
  }
  System.out.println("============================================================");
  //keySet
  Set<String> keySet = map.keySet();
  for (String string : keySet)
  {
   System.out.println(string+":"+map.get(string));
  }
  System.out.println("==============================================");
  //values:只能遍历值
  Collection<Student> coll = map.values();
  for (Student student : coll)
  {
   System.out.println(student);
  }
 }
 //treeMap排序
 public static void demo4(){
  Map<Student,String> map = new TreeMap<Student,String>();
  for (int i = 1; i < 6; i++)
  {
   //添加元素
   int age = (int)(Math.random()*(100-20+1))+20;
   map.put(new Student("stu"+i,age),"stu"+i);
  }
  System.out.println(map);
  
 }
}


 class Student implements Comparable<Student>{

 String name;
 int age;
 public Student(String name, int age)
 {
  super();
  this.name = name;
  this.age = age;
 }
 @Override
 public String toString()
 {
  return "Student [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;
  Student other = (Student) 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;
 }
 @Override
 public int compareTo(Student o)
 {
  if(this.age<o.age){
   return -1;
  }else if(this.age>o.age){
   return 1;
  }
  return 0;
 }
 
}


一个不错的java项目:JAVA WEB 项目教程-模仿天猫整站 J2EE版