java中的集合框架(2)

java中的集合框架(2)

JDK提供的处理键值对数据的集合类

Map接口是处理键值对数据的*集合接口。

        HashMap类

        Hashtable类

HashMap类

  1. 可以处理键值对数据
  2. 保存键值对数据的存储空间会自动扩展。
  3. 所保存的键值对数据可以为null.
  4. 保存的键值对数据是无序的。
  5. 不能有重复的键【重复的键算一个数据】

构造方法:

HashMap() 构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。

HashMap(int initialCapacity) 构造一个空的 HashMap具有指定的初始容量和默认负载因子(0.75)。

HashMap(int initialCapacity, float loadFactor) 构造一个空的 HashMap具有指定的初始容量和负载因子。

HashMap(Map m) 将实现Map接口的集合类转换成HashMap

实例方法:

put(K key, V value) 添加键值对数据。

size() 得到集合中键值对元素的个数。

isEmpty() 判断集合书否为空 

clear() 清空集合。

containsKey(Object key) 判断指定的键数据在集合中是否存在。

containsValue(Object value) 判断指定的值数据在集合中是否存在 。

get(Object key)根据指定的键数据得到与这个键对应的值数据。

remove(Object key)根据指定的键数据删除整个键值对数据。

replace(K key, V oldValue, V newValue) 根据指定的键数据替换对应的值数据。

遍历键值对集合:

Set<K>  keySet() 得到键值对集合中所有键值对数据的键数据保存到set集合中

Collection<Vvalues() 得到键值对集合中所有键值对数据的键数据保存到Collection<V>集合中

Set<Map.Entry<K,V>> entrySet()得到键值对集合中所有键值对数据保存到Set<Map.Entry<K,V>>集合中

例如:

public static void main(String[] args) {

//构造方法:

//HashMap() 构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。

HashMap  map1=new HashMap();

//HashMap(int initialCapacity) 构造一个空的 HashMap具有指定的初始容量和默认负载因子(0.75)。

HashMap  map2=new HashMap(30);

//HashMap(int initialCapacity, float loadFactor) 构造一个空的 HashMap具有指定的初始容量和负载因子。

HashMap  map3=new HashMap(30,0.5f);

//HashMap(Map m) 将实现Map接口的集合类转换成HashMap

HashMap  map4=new HashMap(map2);

//put(K key, V value) 添加键值对数据。

HashMap  map=new HashMap();

map.put(100,"zhangsan");

map.put(12.5,true);

map.put("test",1000);

map.put(false,168.5);

//键值对数据可以为null.

map.put(null, "java");

map.put("www",null);

//不能有重复的键.可以有重复的值

map.put(null,null);

//size() 得到集合中键值对元素的个数。

System.out.println("size===="+map.size());

//containsKey(Object key) 判断指定的键数据在集合中是否存在。

System.out.println("containsKey===="+map.containsKey("zhangsan"));

//containsValue(Object value) 判断指定的值数据在集合中是否存在 。

System.out.println("containsValue===="+map.containsValue("zhangsan"));

//get(Object key)根据指定的键数据得到与这个键对应的值数据。

System.out.println("get===="+map.get("test"));

//remove(Object key)根据指定的键数据删除整个键值对数据。

map.remove(null);

System.out.println("size===="+map.size());

//replace(K key, V oldValue, V newValue) 根据指定的键数据替换对应的值数据。

map.replace("test",1000,"hello");

System.out.println("get===="+map.get("test"));

//Set<K>  keySet() 得到键值对集合中所有键值对数据的键数据保存到set集合中

Set  keyset=map.keySet();

for(Object  objkey:keyset){

System.out.println("key==="+objkey);

}

//Collection<V> values() 得到键值对集合中所有键值对数据的键数据保存到Collection<V>集合中

Collection  vals=map.values();

for(Object  objvalue:vals){

System.out.println("value==="+objvalue);

}

//Set<Map.Entry<K,V>> entrySet()得到键值对集合中所有键值对数据保存到Set<Map.Entry<K,V>>集合中

Set   k_v_set=map.entrySet();

for(Object obj:k_v_set){

System.out.println(obj);

}

//遍历Map集合的方法

HashMap<String,String>  testmap=new HashMap<String,String>();

testmap.put("name","zhangsan");

testmap.put("pass","123456");

testmap.put("address","西安");

for(Map.Entry<String,String>  entry:testmap.entrySet()){

//System.out.println("mykey=="+entry.getKey());

//System.out.println("myvalue=="+entry.getValue());

System.out.println("k-v=="+entry.getKey()+":"+entry.getValue());

}

}

 Hashtable类

1.可以处理键值对数据

2.保存键值对数据的存储空间会自动扩展。

3.不允许null出现

4.不能有重复的键【重复的键算一个数据】

5.保存的键值对数据是无序的。

构造方法:

Hashtable() 构造一个空的 Hashtable,默认初始容量(11)和默认负载系数(0.75)。

Hashtable(int initialCapacity) 构造一个空的 Hashtable具有指定的初始容量和默认负载因子(0.75)。

Hashtable(int initialCapacity, float loadFactor) 构造一个空的 Hashtable具有指定的初始容量和负载因子。

Hashtable(Map m) 将实现Map接口的集合类转换成Hashtable

实例方法:

put(K key, V value) 添加键值对数据。

size() 得到集合中键值对元素的个数。

isEmpty() 判断集合书否为空 

clear() 清空集合。

containsKey(Object key) 判断指定的键数据在集合中是否存在。

containsValue(Object value) 判断指定的值数据在集合中是否存在 。

get(Object key)根据指定的键数据得到与这个键对应的值数据。

remove(Object key)根据指定的键数据删除整个键值对数据。

replace(K key, V oldValue, V newValue) 根据指定的键数据替换对应的值数据。

遍历键值对集合:

Set<K>  keySet() 得到键值对集合中所有键值对数据的键数据保存到set集合中

Collection<Vvalues() 得到键值对集合中所有键值对数据的键数据保存到Collection<V>集合中

Set<Map.Entry<K,V>> entrySet()得到键值对集合中所有键值对数据保存到Set<Map.Entry<K,V>>集合中

例如:

public static void main(String[] args) {

Hashtable<String,Object>  table= new Hashtable<String,Object>();

table.put("name","zhangsan");

table.put("age",23);

table.put("sex",true);

table.put("height",168.5);

//table.put("height",167.5);

//table.put(null,168.5);

//table.put("height",null);

System.out.println("size=="+table.size());

for(Map.Entry<String,Object> entry: table.entrySet()){

System.out.println(entry.getKey()+":"+entry.getValue());

}

}

java中的集合框架(2)

Collections  【集合操作类的辅助类】

提供对集合进行操作的查询,复制,排序,线程安全操作的一系列静态方法

集合操作类的辅助类,与数组的辅助类【Arrays】相似。

例如:

public static void main(String[] args) {

ArrayList<String>  list=new  ArrayList<String>();

list.add("name");

list.add("zhangsan");

list.add("age");

list.add("height");

list.add("sex");

list.add("address");

Collections.sort(list);

for(String str:list){

System.out.println(str);

}

}

作业:

1.Collection接口与Map接口的区别?

2.HashMap与Hashtable的区别?