一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第18天,点击查看活动详情。
Java中的集合工具类Collections以及Stream流聚合操作
需要:
(1)掌握Properties集合的特点及相关方法的用法。
(2)掌握集合工具类Collections的特点及相关方法的用法。
(3)掌握Stream流类的聚合操作。
Properties集合读写文件的相关方法:
这里的集合必须是Properties集合:
public void load(Reader reader):把文件中的数据读取到集合中
public void store(Writer writer,String comments):把集合中的数据存储到文件
编写程序实现以下功能:有一个文本文件(xzbz.txt),我知道数据是键值对形式的,但是不知道内容是什么。请写一个程序判断是否有“lisi”这样的键存在,如果有就改变其值为”100”。
xzbz.txt文件内容可能如下:
zhangsan=30
lisi=40
wangwu=50
分析:
A:把文件中的数据加载到集合中
B:遍历集合,获取得到每一个键
C:判断键是否有为"lisi"的,如果有就修改其值为"100"
D:把集合中的数据重新存储到文件中
Properties prop=new Properties();
Reader r=new FileReader("xzbz.txt");
prop.load(r);
r.close();
Set<String> set = prop.stringPropertyNames();
for (String key : set) {
if(key.equals("lisi")){
prop.setProperty(key, "100");
}
}
Writer w=new FileWriter("xzbz.txt");
prop.store(w, null);
w.close();
Collections集合工具类的相关方法及功能:
Collections:是针对集合进行操作的工具类,都是静态方法。
面试题:Collection和Collections的区别?
Collection:是单列集合的顶层接口,有子接口List和Set。
Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
要知道的方法:
public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。
public static <T> int binarySearch(List<?> list,T key):二分查找
public static <T> T max(Collection<?> coll):最大值
public static void reverse(List<?> list):反转
public static void shuffle(List<?> list):随机置换
Collections集合工具类对自定义类元素的排序:
Collections可以针对ArrayList存储基本包装类的元素排序,注意:如果同时有自然排序和比较器排序,以比较器排序为主。
聚合操作的基本用法:
过滤出集合中姓“林”的名单并截取前2个人,最终输出过滤和截取后的集合。
1.创建一个List集合对象
2.创建一个Stream流对象
3.对Stream流中的元素分别进行过滤、截取操作
4.对Stream流中的元素进行终结操作,进行遍历输出
List<String> list = new ArrayList<String>();
list.add("林青霞");
list.add("王祖贤");
list.add("林凤娇");
list.add("林志颖");
list.add("林志玲");
Stream<String> stream = list.stream();
Stream<String> stream2 = stream.filter(i -> i.startsWith("林"));
Stream<String> stream3 = stream2.limit(2);
stream3.forEach(j -> System.out.println(j));
跳过+截取功能:
stream.skip(1) // 跳过流中的前1个元素
stream.limit(2) // 截取流中的前2个元素