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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 支离疏者 于 2015-5-26 19:49 编辑

Map集合:该集合存储键值对,一对一对往里存,并且键是唯一的。
特点:要保证map集合中键的唯一性
Map
  |--Hashtable:底层是哈希表数据结构,不可以存入nullnull键,该集合是线程同步的
  |--HashMap:底层是哈希表数据结构,允许存入nullnull键,该集合不同步的,效率高
  |--TreeMap:底层是二叉树结构,线程不同步,可以用于给Map集合中的键进行排序。
1,添加
V put(K key, V value)
void putAll(Map<? extends K,? extends V> m)
2,删除
void clear()
V remove(Object key)
3,判断
boolean containsKey(Object key)  
boolean containsValue(Object value)
boolean isEmpty()
4,获取
V get(Object key)  
int size()
Collection<V> values()
Set<K> keySet()  :将map中所有的键存入到set集合,因为set具备迭代器
        所有可以迭代方法取出所有的键,再根据get方法,获取每一个键对应的值
Map集合的取出原理:将map集合转成Set集合,再通过迭代器取出。
Set <String> keySet=map.keySet();
Iterator<String> it = keySet.iterator();
while(it.hasNext())
{
String key =it.next();
String value =map.get(key);
System.out.println(“key:”+key+”,value:”+value)
}
Set<Map.Entry<K,V>> entrySet() :将map集合中的映射关系存入到了set集合中
Set  <Map.Entry<String,String>> entrySet = mao.entrySet();
Iterator  <Map.Entry<String,String>> it = entrySet.iterator();
While(it.hasNext())
{
Map.Entry <String,String> me=it.next();
System.out.println(me.getKey()+”:::”+me.getValue());
}
map.Entry  :Entry就是Map接口中的内部接口;
为什么要定义在map内部呢?Entry是访问键值关系的入口,是map的入口访问的是map中的键值对。
TreeSet:排序
例:按学生姓名排序:
import java.util.*;
class TreeMapTest
{
        public static void main(String[] args)
        {
                TreeMap<Student,String>tm=new TreeMap<Student,String>(new StuNameCompare());
                tm.put(new Student("lisi04",39),"shanghai");
                tm.put(new Student("lisi06",35),"hangzhou");
                tm.put(new Student("lisi02",32),"wuhan");
/*
方法一:entrySet:
                Set<Map.Entry<Student,String>> entrySet = tm.entrySet();
                Iterator <Map.Entry<Student,String>> it=entrySet.iterator();
                while (it.hasNext())
                {
                        Map.Entry<Student,String> me = it.next();
                        System.out.println(me.getKey()+"...."+me.getValue());
                        //System.out.println(it.next());
                }
*/
//方法二:keySet
                       
                Set<Student> keySet = tm.keySet();
                Iterator <Student> it = keySet.iterator();
                       
                while (it.hasNext())
                {
                        Student stu=it.next();
                        String addr=tm.get(stu);
                        System.out.println(stu+"---"+addr);
                }
        }
}
class StuNameCompare implements Comparator<Student>//设立一个比较器,以学生姓名为排序依据
{
        public int compare(Student s1,Student s2)
        {
                int num = s1.getName().compareTo(s2.getName());
                if (num ==0)
                {
                        num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
                }
                return num;
        }
}

什么时候使用map集合?当数据之间存在着映射关系时,就要先想map集合


1 个回复

倒序浏览
看到了键值对,但是好多都不懂.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马