实用的小记【不定期更新】

1.字符串拼接【,】
public static void main(String[] args) {
    List<String> list = Arrays.asList("1", "2", "3", "4");
    String pj = list.stream().distinct().collect(joining(","));
    System.out.println(pj);
}

结果:1,2,3,4

2.结果集进行排序分页处理

@Data
    static
    class Student{
        private String name;
        private Integer age;
        private LocalDate birthDay;
    }

    public static void main(String[] args) {
        
        List<Student> result = new ArrayList<>();
        Student student = new Student();
        student.setAge(18);
        student.setName("张三");
        student.setBirthDay(LocalDate.parse("2016-12-12"));
        result.add(student);

        Student student0 = new Student();
        student0.setAge(17);
        student0.setName("李四");
        student0.setBirthDay(LocalDate.parse("2016-11-12"));
        result.add(student0);

        // 封装数据
        List<Student> newResult = result.stream()
//                .distinct()
//                .map(e -> {
//                    Student student1 = new Student();
//                    student.setAge(18);
//                    student.setName("张三");
//                    student.setBirthDay(LocalDate.parse("2016-12-12"));
//                    return student1;
//                })
                // 先将集合赋值完再进行排序,null值的放到后面,避免空指针
                .sorted(Comparator.nullsLast(Comparator.comparing(Student::getBirthDay, Comparator.nullsLast(LocalDate::compareTo)).reversed()))
                //出生日期排序  .reversed() 倒序
                // 分页处理 .skip((pageIndex - 1) * pageSize).limit(pageSize)
                .skip(0).limit(10)
                .collect(Collectors.toList());
        System.out.println(newResult);
        
    }

3.使用Stream对象求交集

将集合转换为Stream对象
Stream<Integer> stream1 = list1.stream();
Stream<Integer> stream2 = list2.stream();

使用Stream对象求交集
List<Integer> intersection = stream1.filter(list2::contains).collect(Collectors.toList());

4.oracle查看锁表
SELECT
    sess.sid,
    sess.serial#,
    lo.oracle_username, -- 登陆账号名称
    lo.os_user_name,    -- 登录电脑名称
    ao.object_name,     -- 被锁表名
    lo.locked_mode      -- 死锁级别
FROM
    v$locked_object lo,
    dba_objects ao,
    v$session sess 
WHERE
    ao.object_id = lo.object_id 
    AND lo.session_id = sess.sid;
    
死锁级别:
    0:none
    1:null 空
    2:Row-S 行共享(RS):共享表锁
    3:Row-X 行专用(RX):用于行的修改
    4:Share 共享锁(S):阻止其他DML操作
    5:S/Row-X 共享行专用(SRX):阻止其他事务操作
    6:exclusive 专用(X):独立访问使用
————————————————————————————————
解锁方法
alter system kill session '68,51'; -- 分别为SID和SERIAL#号

查看引起锁表的sql语句
SELECT
    A.USERNAME,
    A.MACHINE,
    A.PROGRAM,
    A.SID,
    A.SERIAL#,
    A.STATUS,
    C.PIECE,
    C.SQL_TEXT 
FROM
    V$SESSION A,
    V$SQLTEXT C 
WHERE
    A.SID IN ( SELECT DISTINCT T2.SID FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID ) 
    AND A.SQL_ADDRESS = C.ADDRESS ( + ) 
ORDER BY
    C.PIECE;

5.BigDecimal 数值处理

public class test {
    /*关于数字格式化:java.text.DecimalFormat;

    数字格式元素:
            # 任意数字
            , 千分位
            . 小数点
            0 不够补0
        */

    public static void main(String[] args) {
        //1.创建数字格式化对象
        //需求:加入千分位.
        DecimalFormat df = new DecimalFormat("###,###");
        //开始格式化
        System.out.println(df.format(1234567)); //"1,234,567"

        //需求:加入千分位,保留2位小数
        DecimalFormat df1 = new DecimalFormat("###,###.##");
        System.out.println(df1.format(1234567.123)); //"1,234,567.12"

        //需求:加入千分位,保留4位小数,并且不够补0
        DecimalFormat df2 = new DecimalFormat("###,###.0000");
        System.out.println(df2.format(1234567.123));//"1,234,567.1230"

        //创建大数据.
        BigDecimal v1 = new BigDecimal(10);
        BigDecimal v2 = new BigDecimal(20);
        //做加法运算
        //v1 + v2; //错误:两个引用类型不能做加法运算.
        //必须调用方法执行加法运算.
        BigDecimal v3 = v1.add(v2);
        System.out.println(v3); //30
    }
}

5.返回不带.0的BigDecimal类型的方法小结

public static void main(String[] args) {
    // 返回不带.0的BigDecimal
    System.out.println(new BigDecimal(BigDecimal.valueOf(1000).add(BigDecimal.valueOf(0.0)).stripTrailingZeros().toPlainString()));
}
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值