Map接口
Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作,最常用的实现类是HashMap
Map接口常用方法
方法名 | 说明 |
Object put(Object key, Object val) | 以“键-值”对的方式进行存储 |
Object get(Object key) | 根据键返回相关联的值,如果不存在指定的键,返回null |
Object remove(Object key) | 删除由指定的键映射的“键-值对” |
int size() | 返回元素个数 |
Set keySet() | 返回键的集合 |
Collection values() | 返回值的集合 |
boolean containsKey(Object key) | 如果存在由指定的键映射的“键-值对”,返回true |
遍历Map集合
方法1:通过迭代器Iterator实现遍历 .
方法2:增强型for循环
方法3:键值对
//准备键值对容器存储键值对
HashMap hm=new HashMap();
//向集合中存储数据
hm.put("CN","中国");
hm.put("RU","俄罗斯联邦");
hm.put("US","美利坚合众国");
hm.put("JP","日本");
//增强型for循环实现遍历 .
Set keys=hm.keySet();
for(Object object:keys){
String key =(String)object;
Object obj=hm.get(key);
String value=(String)obj;
System.out.println(key+"----"+value);
}
System.out.println("------------");
//通过迭代器Iterator实现遍历 .
Set keys2=hm.keySet();
Iterator it=keys2.iterator();
while(it.hasNext()){
Object obj =it.next();
String key =(String)obj;
Object obje=hm.get(key);
String value =(String)obje;
System.out.println(key+"----"+value);
}
System.out.println("-----------");
//使用键值对的方式实现遍历 .
Set keyValues=hm.entrySet();//
Iterator ite = keyValues.iterator();//
while(ite.hasNext()){
Object obj=ite.next();
Map.Entry me=(Map.Entry)obj;
Object objel=me.getKey();
String key =(String)objel;
Object obje3=me.getValue();
String value=(String)obje3;
System.out.println(key+"-"+value);
}
如何解决以下强制类型转换时容易出现的异常问题
List的get(int index)方法获取元素
Map的get(Object key)方法获取元素
Iterator的next()方法获取元素
通过泛型
JDK5.0使用泛型改写了集合框架中的所有接口和类
泛型
将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性,本质是参数化类型
泛型集合
泛型集合可以约束集合内的元素类型
典型泛型集合ArrayList<E>、HashMap<K,V> <
E>、<K,V>表示该泛型集合中的元素类型
泛型集合中的数据不再转换为Object
除了指定了集合中的元素类型外,泛型集合和之前学习的集合的用法完全一样
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Test {
public static void main(String[] args) {
// 准备键值对容器存储键值对
HashMap<String, String> hm = new HashMap<String, String>();
// 向集合中存储数据
hm.put("CN", "中国");
hm.put("RU", "俄罗斯联邦");
hm.put("US", "美利坚合众国");
hm.put("JP", "日本");
// 增强型for循环实现遍历
Set<String> keys = hm.keySet();
for (String object : keys) {
String value = hm.get(object);
System.out.println(object + "----" + value);
}
System.out.println("------------");
// 通过迭代器Iterator实现遍历
Set<String> keys2 = hm.keySet();
Iterator<String> it = keys2.iterator();
while (it.hasNext()) {
String key = it.next();
String value= hm.get(key);
System.out.println(key + "----" + value);
}
System.out.println("-----------");
// 使用键值对的方式实现遍历
Set<Map.Entry<String, String>> keyValues = hm.entrySet();//
Iterator<Map.Entry<String, String>> ite = keyValues.iterator();//
while (ite.hasNext()) {
Map.Entry<String, String> me = ite.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key + "----" + value);
}
}
}
Collections算法类
Java集合框架将针对不同数据结构算法的实现都保存在工具类中
Collections类定义了一系列用于操作集合的静态方法
Collections类常用方法
Collections和Collection不同,前者是集合的操作类,后者是集合接口
Collections提供的常用静态方法
sort():排序
binarySearch():查找
max()\min():查找最大\最小值
Collections排序
Collections类可以对集合进行排序、查找和替换操作
实现一个类的对象之间比较大小,该类要实现Comparable接口
重写compareTo()方法