import org.junit.Test;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.*;
/**
* @Author:
* @Date: 2018/12/12 13:08
* @Description:
*/
public class test {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User(21L, "张三"));
list.add(new User(25L, "李四"));
list.add(new User(22L, "王五"));
list.add(new User(19L, "赵柳"));
list.add(new User(32L, "王5"));
list.add(new User(29L, "王6"));
list.add(new User(21L, "王7"));
// 对象根据年龄属性升序排序
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge)).collect(toList());
// 对象根据年龄属性降序排序
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(toList());
// 标识升序,再按创建日期降序
// List<BhAnnouncement> newList = announcementList.stream().sorted(Comparator.comparing(BhAnnouncement::getReadFlag).thenComparing(BhAnnouncement::getSendTime).reversed()).collect(toList());
// list遍历
newList.forEach(System.out::println);
// 平均数
double asDouble = list.stream().mapToLong(User::getAge).average().getAsDouble();
System.out.println("average:" + asDouble);
double avg = list.stream().collect(Collectors.averagingLong(User::getAge));
System.out.println("average:" + avg);
// 最大值
long asLong = list.stream().mapToLong(User::getAge).max().getAsLong();
System.out.println("max:" + asLong);
// 最小值
long asLong1 = list.stream().mapToLong(User::getAge).min().getAsLong();
System.out.println("min:" + asLong1);
// 求和
long sum1 = list.stream().mapToLong(User::getAge).sum();
System.out.println("sum:" + sum1);
// 提取对象属性生成list
List<Long> ids = list.stream().map(User::getAge).collect(toList());
System.out.println(ids);
// list升序排序
Collections.sort(ids);
System.out.println(ids);
// 生成中位数
Long j;
if (ids.size() % 2 == 0) {
j = (ids.get(ids.size() / 2 - 1) + ids.get(ids.size() / 2)) / 2;
System.out.println("中位数为" + j);
} else {
j = ids.get(ids.size() / 2);
System.out.println("中位数为" + j);
}
// list倒序排序
ids.sort(Comparator.reverseOrder());
System.out.println(ids);
// 去重
List<User> users = list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingLong(User::getAge))), ArrayList::new));
System.out.println("去重:"+users);
/**
* List -> Map
* 需要注意的是:toMap 如果集合对象有重复的key,会报错Duplicate key ....
* apple1,apple12的id都为1。可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
*/
Map<Long, User> userMap = list.stream().collect(Collectors.toMap(User::getAge, a -> a, (k1, k2) -> k1));
System.out.println(userMap);
//过滤出符合条件的数据
List<User> filterList = list.stream().filter(a -> a.getName().equals("李四")).collect(toList());
System.out.println("filterList:" + filterList);
List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);
int sum = list2.stream().reduce(0, (acc, value) -> acc + value);
System.out.println(sum);
List<Integer> result = list2.stream().filter((value) -> value > 2).collect(toList());
result.forEach(System.out::println);
List<String> result2 = list2.stream().map(value -> String.format("String:%s", value)).collect(toList());
result2.forEach(System.out::println);
// 用于收集统计数据的状态对象,例如count,min,max,sum和平均。
IntSummaryStatistics stats = list2.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("Max : " + stats.getMax());
System.out.println("Min: " + stats.getMin());
System.out.println("Sun: " + stats.getSum());
System.out.println("Average : " + stats.getAverage());
System.out.println("Count : " + stats.getCount());
System.out.println("toString : " + stats.toString());
}
}
class User {
private Long age;
private String name;
public User(Long i, String s) {
this.age = i;
this.name = s;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [age=" + age + ", name=" + name + "]";
}
}
分享到:
相关推荐
实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 ...
实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 矩阵的减法 98 实例73 ...
实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 ...
实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 矩阵的减法 98 ...
实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 矩阵的减法 98 实例73 ...
最大值可以通过比较每个元素与当前最大值来更新,平均值则需要累加所有元素并除以数组长度。 - 计算奇数个数,同样在循环中判断当前元素是否为奇数(`Mod`运算符),若为奇数则计数器加1。 - 使用`MsgBox`或控件...
- 统计函数如`sum()`求和,`mean()`求平均,`var()`求样本方差,`sd()`求样本标准差,`min()`和`max()`分别求最小值和最大值,`range()`返回最小值和最大值的范围。 5. **数据操作**:在数据框`d`中,我们可以对...
4. **高级功能**:除了基本的求和,可能还提供其他统计功能,如计算平均值、中位数、众数,甚至进行更复杂的数学运算,如计算字符串中数字的最大值、最小值,或者排序等。 在实际应用中,"string-sum"可以用于多种...
57. 多表之最:比较多个列表的最小值或最大值。 58. 列表查重:`set()`可以快速去除列表中的重复元素。 59. 列表反转:`list.reverse()`方法可以翻转列表中的元素顺序。 60. 浮点数等差数列:通过循环和数学公式可以...
- `MAX(column)` 和 `MIN(column)` 找到最大值和最小值。 6. **比较运算符**: - `=`, `!=` 或 `<>` 用于比较是否相等。 - `, `>`, `, `>=` 分别表示小于、大于、小于等于和大于等于。 - `BETWEEN lower_bound ...
- `fractile(Sales, 0.5)`:返回所有销售记录的中位数。 ##### 4.4 Skew函数 - **函数格式**:`skew ( [set_expression] [ distinct ] [ total [, fld}>]] expression )` - **功能描述**:返回所有符合集合表达式...
- **AVG**: 计算平均值。 - **COUNT**: 计数。 - **SUM**: 求和。 - **MIN**: 最小值。 - **MAX**: 最大值。 #### 第三章 高级查询与数据操作 **1. 多表查询** - **定义**:从两个或更多的表中提取数据。 -...
6. **数据统计和分析**:awkward1库还提供了各种统计方法,如求和、平均值、最大值和最小值,以及计算直方图等,这些都是数据分析过程中的常见需求。 7. **序列化与反序列化**:awkward1能够将数据序列化为JSON格式...
除了基本的复杂类型函数之外,还可以使用其他函数对复杂类型进行更复杂的操作,如`concat`(连接数组)、`sort_array`(排序数组)等。 ### 2. 内置函数 #### 2.1 数学函数 数学函数提供了一系列基本的数学运算,...
- `AVG(column_name)`: 计算某列的平均值。 - `MAX(column_name)`: 找出某列的最大值。 - `MIN(column_name)`: 找出某列的最小值。 - **带 GROUP BY 的计算**: 用于根据一个或多个列的值对行进行分组。 - **...
- 最大值: `MAX(column_name)`. - 最小值: `MIN(column_name)`. - 组合使用: 可以在同一个查询中同时使用多个聚合函数。 #### 九、分组查询 - **分组**是将数据按一个或多个列进行分组的过程。 - 分组查询: ...
- `AVG(column_name)`:平均值。 - `COUNT(column_name)`:计数。 - `MIN(column_name)`:最小值。 - `MAX(column_name)`:最大值。 ##### 1.9 子查询 - **子查询**:在一个查询语句中嵌套另一个查询语句。 - ...
8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11gR2) 207 8.7.2 Rank 209 8.7.3 Dense_rank 210 8.7.4 Row_number 211 ...
- `MAX(col)`: 最大值 - **字符串函数** - `CONCAT(s1, s2)`: 连接字符串 - `SUBSTR(s, start, length)`: 截取字符串 - `TRIM(s)`: 去除字符串两端空白字符 - `UPPER(s)`: 转换为大写 - `LOWER(s)`: 转换为...