Map接口集合
1.Map集合概念
Map<K,V> map集合是双列集合,存储“键”和“值”,每一个键都对应一个值,键是唯一的,值是
可以重复的。
2.keySet遍历Map集合
keySet 是存储集合对象所有键的Set集合
Set set= map.keySet(); //返回值类型是Set集合
1迭代器遍历
Map<String,String> map = new HashMap();
map.put(“邓超”,“孙俪”);
map.put(“李晨”,“范冰冰”);
map.put(“李雷”,“韩梅梅”);
//keySet遍历集合
// Set set = map.keySet(); //键集 存储所有键的Set集合
//迭代器循环
//Iterator it = set.iterator();
//简化
Iterator it = map.keySet().iterator();
while(it.hasNext()){
String key = it.next();
String value = map.get(key); //传入key得到value
System.out.println(key+" “+value);
}
增强for循环遍历
//forEach
Set set= map.keySet();
for(String key:set){ //:右边是keySet
String value = map.get(key);
System.out.println(key+” “+value);
}
entrySet遍历Map集合
** 迭代器遍历**
private static void f1() {
//1.创建Map集合对象
Map<String,String> map = new HashMap();
//2.存键值对
map.put(“邓超”,“孙俪”);
map.put(“杨过”,“小龙女”);
map.put(“李雷”,“韩梅梅”);
//通过map对象 获得entrySet对象 getKey getValue
Set<Map.Entry<String, String>> set = map.entrySet();
//迭代器遍历
Iterator<Map.Entry<String,String>> it = set.iterator();
while(it.hasNext()){
String key = it.next().getKey();
System.out.println(key+” “+map.get(key)); //传键获得值
}
}
}
增强for循环遍历
private static void f2() {
//1.创建Map集合对象
Map<String,String> map = new HashMap();
//2.存键值对
map.put(“邓超”,“孙俪”);
map.put(“杨过”,“小龙女”);
map.put(“李雷”,“韩梅梅”);
map.put(“李雷2”,“韩梅梅”);
map.put(“李雷3”,“韩梅梅”);
//3.获得entrySet 增强for循环遍历集合
Set<Map.Entry<String, String>> set = map.entrySet();
for(Map.Entry<String, String> entry:set){
String key = entry.getKey(); //获得到键
String value = entry.getValue(); //获得到值
System.out.println(key+” “+value);
}
}
可变参数
在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简
化成如下格式:
修饰符 返回值类型 方法名(参数类型… 形参名){ }
其实这个书写完全等价与
修饰符 返回值类型 方法名(参数类型[] 形参名){ }
只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。
当参数列表出现多个参数,可变参数作为方法形参需要位于最后
private static void f1(int [] num) {
for(int i=0;i<num.length;i++){
System.out.println(num[i]);
}
}
public static void f2(int…num){ //可变形参
for(int i=0;i<num.length;i++){
System.out.println(num[i]);
}
}
集合嵌套
集合嵌套并不是一个新的知识点,仅仅是集合内容又是集合,如Collection集合嵌套、
Collection集合与Map集合相互嵌套、Map集合嵌套。
ArrayList嵌套 ArrayList
ArrayList< ArrayList >
Collection< ArrayList >
Map嵌套 ArrayList
HashMap<String, ArrayList>
ArrayList< HashMap<String, String>>
Map集合嵌套
HashMap<String, HashMap<String,String>>
HashMap<String, HashMap<Person,Strin
/
public class Demo04 {
public static void main(String[] args) {
//1.先构建JAVA班级 学号=姓名
HashMap<String,String> javaHM = new HashMap<>();
javaHM.put(“01”,“张三”);
javaHM.put(“02”,“李四”);
javaHM.put(“03”,“王五”);
//2.先构建C++班级 学号=姓名
HashMap<String,String> cPlusHM = new HashMap<>();
cPlusHM.put(“04”,“小张”);
cPlusHM.put(“05”,“小李”);
cPlusHM.put(“06”,“小王”);
//3.把2个班级 存入另一个Map集合 Key “JAVA” Value “班级对象”
HashMap<String,HashMap<String,String>> hm = new HashMap();
hm.put(“Java班级”,javaHM);
hm.put(“C++班级”,cPlusHM);
//4.遍历
//通过嵌套的集合hm对象得到keySet — 班级名称
for(String className:hm.keySet()){
//System.out.println(className);
//get方法 传入key得到对应的 value
HashMap<String,String> classRoom = hm.get(className); //通过班
级名得到班级教室(学生:学号=姓名)
//通过班级教室得到存储所有键(学号)的Set集合
for(String sno:classRoom.keySet()){
String name = classRoom.get(sno); //通过学号 得到学生的姓名
System.out.println(className+” “+sno+” "+name);
}
}
}
}
Collections类和Arrays类
Arrays中定义了大量的操作数组的方法例如对数组排序,对数组使用二分查找,将数组转换为字符串等,而且都是静态方法,可以通过类名直接调用Collections中定义了大量的操作集合的方法例如对集合排序,对集合使用二分查找,方法也都是静态的,都可以通过类名直接调用
Arrays:是一个工具类,专门操作数组的工具类
- public static List asList(T… a)//可以将数组转换成集合
- static int binarySearch(int[] a, int key)
static void sort(int[] a)
** Collections**:是一个类,专门对集合操作的工具类,可以对集合中的元素排序,对集合中的元素
反转… - int binarySearch(List list,T key)
- void sort(List list)
- Collection:是一个接口,单列集合的顶级父接口