像写SQL语句一样写Java代码
@Data
@AllArgsConstructor
public class Trader { private final String name;
private final String city;
}
@Data
@AllArgsConstructor
public class Transaction { private final Trader trader;
private final int year;
private final int value;
}
public class TraderTransactionTest {
List<Transaction> transactions = null;
// List<Trader> traders = null;
@Before
public void beforeTest(){
Trader zhangsan = new Trader("zhangsan", "shanghai");
Trader lisi = new Trader("lisi", "beijing");
Trader wangwu = new Trader("wangwu", "shanghai");
Trader zhaoliu = new Trader("zhaoliu", "shanghai");
// traders = Arrays.asList(zhangsan, lisi, wangwu, zhaoliu);
transactions = Arrays.asList(
new Transaction(zhaoliu, 2011, 300),
new Transaction(zhangsan, 2012, 1000),
new Transaction(zhangsan, 2011, 400),
new Transaction(lisi, 2012, 710),
new Transaction(lisi, 2012, 700),
new Transaction(wangwu, 2012, 950)
);
}
//2011年发生的交易,按照交易额排序
@org.junit.Test
public void test1(){
List<Transaction> l = transactions.stream().filter(t -> t.getYear() == 2011)
.sorted(Comparator.comparing(Transaction::getValue))
.collect(Collectors.toList());
System.out.println(l);
}
//交易员都在哪些不同的城市工作过
@org.junit.Test
public void test2(){
// traders.stream().map(Trader::getCity).distinct().forEach(s -> System.out.print(s + "\t"));
transactions.stream().map(t -> t.getTrader().getCity()).distinct().forEach(s -> System.out.print(s + "\t"));
}
//找出来自上海的交易员,按照名字排序
@org.junit.Test
public void test3(){
// List<Trader> l = traders.stream()
// .filter(t -> "shanghai".equals(t.getCity()))
// .sorted(Comparator.comparing(Trader::getName))
// .collect(Collectors.toList());
List<Trader> l = transactions.stream().map(Transaction::getTrader)
.filter(t -> "shanghai".equals(t.getCity()))
.distinct()
.sorted(Comparator.comparing(Trader::getName))
.collect(Collectors.toList());
System.out.println(l);
}
//返回交易员姓名字符串,并按照字母顺排序
@org.junit.Test
public void test4(){
String traderStr = transactions.stream().map(t -> t.getTrader().getName())
.distinct()
.sorted()
.reduce("", (n1, n2) -> n1 + n2);
traderStr = transactions.stream().map(t -> t.getTrader().getName())
.distinct()
.sorted()
.collect(Collectors.joining());
System.out.println(traderStr);
}
//有没有交易员在上海工作
@org.junit.Test
public void test5(){
transactions.stream().anyMatch(t -> t.getTrader().getCity().equals("shanghai"));
}
//生活在上海的交易员的所有交易额
@org.junit.Test
public void test6(){
transactions.stream().filter(t -> "shanghai".equals(t.getTrader().getCity()))
.map(Transaction::getValue)
.forEach(v -> System.out.print(v + "\t"));
}
//所有交易中,最高的交易额是多少
@org.junit.Test
public void test7(){
Optional<Integer> o = transactions.stream().map(Transaction::getValue).reduce(Integer::max);
System.out.println(o);
}
//找到交易额最小的交易
@org.junit.Test
public void test8(){
Optional<Integer> o = transactions.stream().map(Transaction::getValue).reduce(Integer::min);
System.out.println(o);
Optional<Transaction> ot = transactions.stream().reduce((t1, t2) -> t1.getValue() < t2.getValue() ? t1 : t2);
System.out.println(ot);
ot = transactions.stream().min(Comparator.comparing(Transaction::getValue));
System.out.println(ot);
}
}
像写SQL语句一样写Java代码的更多相关文章
- 三种执行SQL语句的的JAVA代码
问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...
- 关于在Java代码中写Sql语句需要注意的问题
最近做程序,时不时需要自己去手动将sql语句直接写入到Java代码中,写入sql语句时,需要注意几个小问题. 先看我之前写的几句简单的sql语句,自以为没有问题,但是编译直接报错. String st ...
- 写sql语句连接的时候注意的一个小细节
我在写权限的查询的时候,用到了sql语句的链接写一下出错的时候的代码 $sqlpid="select auth_name from sw_auth where auth_level=0&qu ...
- dedecms清空所有文章怎么操作?sql语句如何写?
小C新建了一个站,确切的说是复制,出于seo考虑,决定清空所有文章,那么dedecms清空所有文章怎么操作?sql语句如何写呢?特别提醒:修改之前一定要先做好备份,以防万一!下面的语句在迫不得已的情况 ...
- 《你还在写sql语句吗?》人生苦短,进入MybatisPlus的丝滑体验
一.发展历程 依稀记得大学期间,类中写sql语句的日子,一个sql语句占据了大部分时间,到后来hibernate的出现算是解决了这一痛点.工作 后,我们又接触到了mybatis这样的框架,瞬间感觉这个 ...
- 写sql语句分别按日,星期,月,季度,年统计
--写sql语句分别按日,星期,月,季度,年统计销售额 --按日 ' group by day([date]) --按周quarter ' group by datename(week,[date]) ...
- (摘至)程序员老鸟写sql语句的经验之谈
做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等.因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为 ...
- 程序员老鸟写sql语句的经验之谈
做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等.因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为 ...
- 写sql语句注意事项
做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等.因此在开发系统的时候,表结构设计是否合理,sql语句是否标准,写出的sql性能是否优化往往会成为 ...
随机推荐
- Qbxt 模拟题 day2(am) T2 jian
[问题描述] 有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[L,R]中则你比较厉害.求你比较厉害的概率. [输入格式] 第一行有三个数N, l, r,含义如上描述. 接下来一行有N个数代 ...
- python isinstance函数
isinstance是Python的一个内建函数 语法: 1 isinstance(object,classinfo) 如果参数object是classinfo的实例,或者object是classin ...
- Windows下Yarn安装与使用
参考博客 1.安装yarn 方法一:使用安装包安装 官方下载安装包,https://yarnpkg.com/zh-Hans/docs/install,安装完毕后,一定要配置环境变量. 方法二:使用np ...
- JVM-GC算法(三)-分代收集算法
对象分类 上次已经说过,分代收集算法是针对对象的不同特性,而使用合适的算法,这里面并没有实际上的新算法产生.与其说分代收集算法是第四个算法,不如说它是对前三个算法的实际应用. 首先我们来探讨一下对象 ...
- TCP输出 之 tcp_transmit_skb
概述 tcp_transmit_skb的作用是复制或者拷贝skb,构造skb中的tcp首部,并将调用网络层的发送函数发送skb:在发送前,首先需要克隆或者复制skb,因为在成功发送到网络设备之后,sk ...
- lockfree buffer test
性能测试(3): 对无锁队列boost::lockfree::queue和moodycamel::ConcurrentQueue做一个性能对比测试 版权声明:本文为博主zieckey原创文章, ...
- Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name) 中文显示乱码
如果file.Name为中文则乱码.解决办法是方法1:response.setHeader("Content-Disposition", "attachment; fil ...
- [转]Cookie详解
从事 Web 开发已有近17个月:在学以致用的工作学习里,对于不怎么使用的部分,多少有些雾里探花的窘迫感-差不多是了解一二,然而又非真切的明晰:这就使得再用的时候,总要去再搜索一番:如此颇为难受,倒不 ...
- JAVA记事本的图形用户界面应用程序
JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...
- asp.net core mvc View Component 应用
ViewComponent 1.View 组件介绍 在ASP.NET CORE MVC中,View组件有点类似于partial views,但是他们更强大,View组件不能使用model bindin ...