Java学习路线-38:集合工具类Stack栈、Queue队列、Properties、Collections、Stream、MapReduce
  TEZNKK3IfmPf 2023年11月12日 24 0

第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

}
}

这只是一个基础模型,如果实际开发中将大量数据存入内存,那机器就崩了

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   24天前   51   0   0 java
  TEZNKK3IfmPf   2024年05月31日   55   0   0 java
TEZNKK3IfmPf