第33 章 : 集合工具类
146 Stack栈操作
Stack栈先进后出, 继承自Vector
继承关系
AbstractCollection(Collection) - AbstractList(List) -ArrayList(List, RandomAccess, Cloneable, java.io.Serializable) -Vector(List, RandomAccess, Cloneable, java.io.Serializable) -Stack
push 入栈
pop 出栈
import java.util.Stack; class Demo { public static void main(String[] args) { Stack<String> stack = new Stack<>(); stack.push("Tom"); stack.push("Jack"); System.out.println(stack.pop()); // Jack } }
147 Queue队列
Queue队列先进先出
@Iterable @Collection @Queue // 队列 @Deque // 双端队列 AbstractCollection(Collection) - AbstractList(List) -ArrayList(List, RandomAccess, Cloneable, Serializable) -Vector(List, RandomAccess, Cloneable, Serializable) -AbstractSequentialList -LinkedList(List, Deque, Cloneable, Serializable) -AbstractQueue(Queue) -PriorityQueue(Serializable)
import java.util.LinkedList; import java.util.Queue; class Demo { public static void main(String[] args) { Queue<String> queue = new LinkedList<>(); queue.offer("Tom"); queue.offer("Jack"); System.out.println(queue.poll()); // Tom } }
PriorityQueue优先级队列
涉及排序Comparable接口
import java.util.PriorityQueue; import java.util.Queue; class Demo { public static void main(String[] args) { Queue<String> queue = new PriorityQueue<>(); queue.offer("Tom"); queue.offer("Jack"); System.out.println(queue.poll()); // Jack } }
148 Properties属性操作
资源文件 *.properties
继承关系
Hashtable<Object,Object> -Properties
Properties常用方法
setProperty // 设置属性 getProperty // 获取属性 store // 保存 load // 读取
只能操作String类型
范例:资源内容输入与输出,用于读取配置资源
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; class Demo { public static void main(String[] args) throws IOException { Properties properties = new Properties(); properties.setProperty("name", "小强"); properties.setProperty("age", "23"); // 输出,中文会被转换为unicode码 properties.store(new FileOutputStream(new File("demo/demo.properties")), "注释"); // 读取文件 properties.load(new FileInputStream(new File("demo/demo.properties"))); System.out.println(properties.getProperty("name")); // 小强 } }
149 Collections工具类
import java.util.ArrayList; import java.util.Collections; import java.util.List; class Demo { public static void main(String[] args) { List<String> list = new ArrayList<>(); // 多元素添加 Collections.addAll(list, "Tom", "Jack", "Steve"); System.out.println(list); // [Tom, Jack, Steve] // 列表反转 Collections.reverse(list); System.out.println(list); // [Steve, Jack, Tom] // 排序 Collections.sort(list); // 二分查找 System.out.println(Collections.binarySearch(list, "Tom")); // 2 } }
面试题:Collection 和 Collections区别
Collection 集合接口
Collections 集合操作工具类
第34 章 : Stream数据流
150 Stream基本操作
Stream 主要是对集合数据进行数据分析操作
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Stream; class Demo { public static void main(String[] args) { List<String> list = new ArrayList<>(); Collections.addAll(list, "Tom", "Jack", "Steve"); Stream<String> stream = list.stream(); System.out.println(stream.filter(item->item.toUpperCase().contains("J")).count()); // 1 } }
示例:数据采集
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; class Demo { public static void main(String[] args) { List<String> list = new ArrayList<>(); Collections.addAll(list, "Tom", "Jack", "Steve"); Stream<String> stream = list.stream(); // 符合条件的数据转为列表输出 List<String> newList = stream.filter(item-> item.toUpperCase().contains("J")).collect(Collectors.toList()); System.out.println(newList); // [Jack] } }
151 MapReduce基础模型
MapReduce模型分为两部分
Map
Reduce
import java.util.ArrayList; import java.util.Collections; import java.util.IntSummaryStatistics; import java.util.List; import java.util.stream.Stream; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } class Demo { public static void main(String[] args) { List<Person> list = new ArrayList<>(); Collections.addAll(list, new Person("小赵", 21), new Person("小钱", 22), new Person("小孙", 23), new Person("小李", 24), new Person("小周", 25), new Person("小吴", 26) ); Stream<Person> stream = list.stream(); IntSummaryStatistics stat = stream.filter( item -> item.getName().contains("小") ).mapToInt( item -> item.getAge() + 1 ).summaryStatistics(); System.out.println(stat.getSum()); // 147 System.out.println(stat.getCount()); // 6 System.out.println(stat.getAverage()); // 24.5 } }