您的位置:首页 > 编程语言 > Java开发

java中Map类测试总结

2017-12-23 08:25 246 查看
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 (a
8f46
ge != 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版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: