Java8
- (一)、双列集合
- (二)、Map集合常用api
- (三)、Map集合的遍历方式
- (四)、HashMap
- (五)、LinkedHashMap
- (六)、TreeMap
- (七)、可变参数
- (八)、Collections
- (九)、不可变集合
(一)、双列集合
特点:
(二)、Map集合常用api
map是双列集合的顶层接口,它的功能全部双列集合都能使用
put :添加/覆盖
添加数据时,如果键不存在,直接把键值对对象添加到map集合中,方法返回null
如果键存在,会把原有的键值对对象覆盖,会把被覆盖的值进行返回
remove会返回删除的值
(三)、Map集合的遍历方式
1.键找值
package day3next;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class mapDemo {
public static void main(String[] args) {
//1.创建Map集合对象
Map<String,String> m=new HashMap<>();
//2.添加元素
m.put("龙1","龙女1");
m.put("龙2","龙女2");
m.put("龙3","龙女3");
//3.获取所有的键,把键放进单列集合
Set<String> keys=m.keySet();
//3.1遍历单列集合,得到每一个键
for (String key:keys){
System.out.println(key);
//3.2利用map集合中的键获取对应的值 get方法
String value=m.get(key);
System.out.println(key+"="+value);
}
}
}
2.键值对
package day3next;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class m2 {
public static void main(String[] args) {
Map<String,String> m=new HashMap<>();
m.put("龙1","龙女1");
m.put("龙2","龙女2");
m.put("龙3","龙女3");
//通过键值对对象遍历
//通过一个方法获取所有的键值对对象,返回一个Set集合
Set<Map.Entry<String, String>> entries = m.entrySet();
//遍历entries这个集合,去得到里面每一个键值对对象
for (Map.Entry<String, String> entry : entries) {
//利用entry 调用get方法获取键值
String key= entry.getKey();
String value = entry.getValue();
System.out.println(key+"="+value);
}
}
}
3.Lambda表达式
package day3next;
import java.util.HashMap;
import java.util.Map;
public class m3 {
public static void main(String[] args) {
Map<String,String> m=new HashMap<>();
m.put("龙1","龙女1");
m.put("龙2","龙女2");
m.put("龙3","龙女3");
//Lambda表达式
//底层:forEach利用第二种方式进行遍历,依次得到每一个键和值
//再调用accept方法
m.forEach((String key,String value)->{
System.out.println(key+"="+value);
});
}
}
(四)、HashMap
如果键存储的是自定义对象,需要重写hashCode和equals方法
如果值存储的是自定义对象,不需要重写
(五)、LinkedHashMap
(六)、TreeMap
(七)、可变参数
用来接收多个数据
格式:属性类型…名字
底层:数组
在方法的形参中,最多写一个可变参数。并且如果有其他参数,可变参数必须写在最后
(八)、Collections
集合工具类,有很多操作集合的方法
(九)、不可变集合
只能查询,不可修改,不能添加,不能删除。
创建方法:
当获取不可变的set集合时,里面的元素必须保证唯一性,不然会报错
获取不可能的map集合,键不能重复。of方法传递的参数是有上限的,最多只能传递20个数据(10个键值对)
传多个参数,使用ofEntries
jdk10后可以使用copyof。会自动判断是不是不可变集合