-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
Map 集合的特点和应用.
1,Map 集合没有实现 Collection 这个接口.
Map 集合最常用的两大子类就是,HashMap 和 TreeMap
HashMap 和 TreeMap 该类继承了 java.util.AbstractMap 该类,复写了其中
的 HashCode 和 equals 两个方法,所以他们在存储元素的时候
HashMap 集合存储元素的时候,是无序的,不可以重复的
TreeMap 集合存储元素的时候是有序的,不可以重复的.
2,Map 集合底层的实现原理,就是 哈希表和 二叉树,此容器中存储的键——值对通过键来标识,所以键不能重复。
如果出现了,重复的键,那么后面赋的值就会把前面的给覆盖掉了.
3,Map 集合 是以键值对的形式存在的 好比 zhangsan=20;集合里面装的都是这样的键值对,
想的得到里面的键,集合.KeySet();这个取出来的元素要放到 Set 集合中来.在利用Set 集合中的特点
将里面的值迭代出来,这样的话就可以得到里面的键,在利用键来得到里面的值,下面代码是这两种取值的方式;
Map<String , Integer> map = new HashMap<String , Integer>();
map.put("zhangsan", 1);
map.put("zhangsan1", 2);
map.put("zhangsan111111", 2);
Set<String> set= map.keySet();
for(String s: set){
String key= s;
Integer value= map.get(s);
System.out.println(key + ".." +value);
}
还有一种取值的方式,就是把这里面的关系给取出来,就是把这两个值绑定在一起的关系.
Set<Map.Entry<String, Integer>> set1 = map.entrySet();
for(Map.Entry<String , Integer> se : set1){
Map.Entry<String, Integer> f = se;
String s= f.getKey();
Integer in= f.getValue();
System.out.println(s+""+in);
}
import java.lang.reflect.Method;
import java.util.Comparator;
public class Person implements Comparable<Person> {//让这个类 具有比较性
private String name;
private int age;
Person(String name,int age){
this.name= name;
this.age= age;
}
@Override
public int compareTo(Person s) {//这是覆盖比较器的方法
int num = new Integer(this.age).compareTo(new Integer(s.age));
if(num == 0)
return s.name.compareTo(this.name);
return num;
}
public int hashCode(){ //对于存放到 HashSet 集合中的时候.覆盖了 HashCode方法
return 60;
}
public boolean equals(Object obj){//对于存放到 HashSet 集合中的时候.覆盖了equals方法
if(!(obj instanceof Person))
throw new RuntimeException("不是人对象");
Person p = (Person)obj;
return this.name.equals(p.name)&& this.age==p.age ;
}
public String toString(){
return name+"..."+age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
class BJQ implements Comparator{//这是比较器
@Override
public int compare(Object o1, Object o2) {//这是覆盖比较器的方法.
// TODO Auto-generated method stub
if(!(o1 instanceof Person && o2 instanceof Person))
throw new RuntimeException("bushi ren lei de dui xiang ");
Person p1= (Person)o1;
Person p2 = (Person)o2;
int unm = p1.getName().compareTo(p2.getName());
if(unm==0)
return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
return unm;
}
}
import java.lang.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.*;
public class VectorTest implements Comparable {
public static void main(String[] args) throws Exception{
Map<String ,Person> map= new TreeMap<String , Person>();
map.put("zhangsan",new Person("wangermazi",20));
map.put("lisi",new Person("tianhao1",25));
map.put("yuanl",new Person("tianhao2",33));
map.put("auanl",new Person("tianhaosan",33));
Set<String> set = map.keySet();
for(String s: set){
System.out.println(s+"..."+map.get(s));
}
}
}
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------