A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© I空空 中级黑马   /  2014-12-18 00:08  /  900 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
   HashSet是如何保证元素唯一性的呢?
   是通过元素的两个方法,hashCode和equals来完成。
   如果元素的HashCode值相同,才会判断equals是否为true。
   如果元素的hashcode值不同,不会调用equals。
   注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
HashMap实现了Map接口,它里面存放了key,value映射存在的,其中key是以Set形式存在,所以不能重复。
value是以Collection形式存在的,所以可以重复。总而言之,一个key只能指向一个value,而一个value可以
指向多个key.如果key重复了,则后面的会覆盖前面的;而Set接口的话,是前面的覆盖后面的。
遍历map的两种方式:
1通过keySet()方法获取key的集合,再用get()的方法获取value.
public class HashMapTest1
{
public static void main(String[] args)
{
  
  HashMap map=new HashMap();//创建一个HashMap 对象
  map.put(new Integer(1), "xiaoming");//通过调用map的put方法,把元素添加进去
  map.put(new Integer(2), "xiaoqiang");
  map.put(new Integer(3), "xiaoli");
  
  Set set=map.keySet();//获取键的集合
  
  for(Iterator iter=set.iterator();iter.hasNext();)//通过遍历key,来获取value的值
  {
   Integer key=(Integer)iter.next();//遍历key
   String value=(String)map.get(key);//通过遍历key来获取alue的值。
   System.out.println("key="+key+",value "+value);
  }
//  System.out.println(map);
}
}
2 通过entrySet()方法,返回此映射所包含的映射关系的Set 视图,Set中存放的是一个个Map.Entry对象
Map.Entry
public class HashMapTest3
{
public static void main(String[] args)
{
  HashMap map=new HashMap();
  
  map.put(new Integer(1),"zhangsan");
  map.put(new Integer(2), "lisi");
  map.put(new Integer(3),  "wangwu");
  
  Set set=map.entrySet();//返回此映射中包含的映射关系的 Set 视图.
  
  for(Iterator iter=set.iterator();iter.hasNext();)
  {
   Map.Entry entry=(Map.Entry)iter.next();
   Integer key=(Integer)entry.getKey();//获取key的值
   String value=(String)entry.getValue();获取value的值
   
   System.out.println("key:"+key+" value:"+value);
  }
}
}
TreeMap是通过二叉树的原理老保证键的唯一性。在使用TeeMap的时候可以通过自定义的比较器进行排序。
public class TreeMapTest
{
public static void main(String[] args)
{
  TreeMap map=new TreeMap(new MyComparator());
  map.put(new Student(10,"XIAOMING"),"HELLO");
  map.put(new Student(7,"zhangsan"),"world");
  map.put(new Student(34,"laoyang"),"helloworld");
  
  //System.out.println(map);
  
  Set set=map.entrySet();
  
  for(Iterator iter=set.iterator();iter.hasNext();)
  {
   Map.Entry entry=(Map.Entry)iter.next();
   Student stu=(Student)entry.getKey();
   String value=(String)entry.getValue();
   
   System.out.println(stu+" "+value);
  }
  
  
}
}
class Student
{
int num;
private String name;
public Student(int num,String name)
{
  this.num=num;
  this.name=name;
}
public String toString()
{
  return "num "+this.num+" name"+this.name;
}


}
class MyComparator implements Comparator
{
public int compare(Object args1,Object args2)
{
  Student stu1=(Student)args1;
  Student stu2=(Student)args2;
  
   return stu1.num-stu2.num;
}
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马