Map接口
Map集合是使用两个列来存储数据,存储的每个元素都包含了两个数据(键和值),所以map中的一个元素就是一个键值对;
特点:
1.Map每个元素由键与值两部分组成 2.Map键不能重复,每个键对应一个值 3.键和值可以为null
*要想得到每个键值对中的value,必须通过key得到。
常用的实现类:
HashMap:使用Hadh表存储数据;
LinkedHashMap: 是用链表+Hash表存储数据;
2.HashMap类
先看map中的方法;
创建Map类型的对象,调用里面的方法:
Map map=new HashMap();
常用方法:
查API
3.遍历Map集合的方式:
1.第一种方式:Set<K> keySet();
1.先得到key的集合;
Set<String>keySet=map.keySet();
2.遍历key的集合,得到每一个key;
for(String key:keySet){
3.通过key得到value;
String value=map.get(key);
2.第二种方式:
1.先得到键值对的关系的集合;
Set<Entry<String,String>>entrySet=map.entrySet();
2.遍历键值对的关系的集合,得到每个键值对的关系的对象;
for(Entry<String,String>entry:entrySet){
3.通过键值对的关系对象,得到键和值;
String key=entry.getKey();
String value=entry.getValue();
4.HashMap存储自定义类型键值
三国演义:
曹操
刘备
孙权
水浒传:
宋江
武松
门庆哥
西游记:
孙悟空
八戒
白骨精
把这电视剧的中角色分类存储在map集合中;按照电视剧的名字分类;
分析:
1.使用三个ArrayList集合分别存储三个电视剧中的角色;
2.使用电视剧的名字作为key,在map中存储三类角色;
代码:
public class HashMapDemo {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
ArrayList<String> list3 = new ArrayList<String>();
list1.add("曹操");
list1.add("刘备");
list1.add("孙权");
list2.add("宋江");
list2.add("武松");
list2.add("门庆哥");
list3.add("孙悟空");
list3.add("八戒");
list3.add("白骨精");
Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
map.put("三国演义", list1);
map.put("水浒传", list2);
map.put("西游记", list3);
Set<Entry<String, ArrayList<String>>> entrySet = map.entrySet();
for (Entry<String, ArrayList<String>> entry : entrySet) {
String key = entry.getKey();
System.out.println(key);
ArrayList<String> value = entry.getValue();
for (String name : value) {
System.out.println(name);
}
System.out.println("--------------");
}
}
}
5.可变参数
从JDK1.5开始添加的这个功能;
格式:
修饰符 返回值类型 方法名(数据类型...变量名){
方法体;
}
数据类型...变量名 :表示可变参数,表示省略了0个或多个 这个类型的参数;
例如:
public int sum(int...i){
renturn 返回值;
}
其中int。。。i,表示省略了0个或多个这个类型的参数;
作用:
提高了方法代码的重复使用率;
扩展了方法的功能;
public String contact(String...s){
renturn 返回字符串拼接的结果;
}
6.Collections类
一个用来操作集合的工具类;
方法:
static void sort(List<T> list):对list集合中的元素进行自然升序的排序;
(对中文的元素不能排序);
static void shuffle(List<T> list):把list集合中的元素随机打乱;