java小结

在开发过程中遇到的各种bug。

一、BigDecimal转json时候会丢失精度问题

在前台页面data中的BigDecimal数据类型,比如0.0000会变为0,导致精度丢失。

data: JSON.stringify(data),

解决方法

new DecimalFormat("#0.0000").format(map.get("percent"));--指定保留四位小数

二、在求概率问题时,两个long型相除误差大

解决方法

先将long型转为double型,再进行运算,将结果赋予double型。

三、前台传数组,后端接受

public void excel(HttpServletResponse response, HttpServletRequest request, 
                         String[] headers, String[] fields) throws Exception {

    String[] bureauArr = request.getParameterValues("bureau[]");
    String[] lineNameArr = request.getParameterValues("lineName[]");
    String[] headers;

两种方式:

一、传参时用String[]

二、使用request.getParameterValues("lineName[]") 接受,参数后边要加[].

四、手动分页

//分页
List<BizIceInfo> bizRtmIceInfoPage = new ArrayList<BizIceInfo>();
int page,rows;
int total = bizRtmIceInfoPage.size();
List<BizIceInfo> pageList = new ArrayList<>();
//数量与页数的关系
if( total - page*rows > 0 ){
    for (int i = 0; i < rows; i++) {
        pageList.add(bizRtmIceInfoPage.get(rows * (page - 1) + i));
    }
}else{
    for (int i = 0; i < total - rows*(page-1) ; i++) {
        pageList.add(bizRtmIceInfoPage.get(rows * (page - 1) + i));
    }

}

五、字符串替换分割与去重

//取字符串中的数字
String[] NumberArr = "1好2huai3#".replaceAll("\\D", "_").replace("_+", "_")).split("_+");
//去重
List<String> Number = (Arrays.asList(NumberArr)).stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());

六、List中对象的某个属性排序

private void CompareBiz(String sidx, String sord, List<BizIceInfo> bizRtmIceInfoPage) {
    //升序
    if(sord.equals("asc")){
        if("company".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparing(BizIceInfo::getCompany));
        }else if("iceHeight".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparingDouble(BizIceInfo::getIceHeight));
        }else if("iceHeightR".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparingDouble(BizIceInfo::getIceHeightR));
        }else if("mark".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparing(BizIceInfo::getMark));
        }
    }else{
    //降序
        if("company".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparing(BizIceInfo::getBsid).reversed());
        }else if("heightThan".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparingDouble(BizIceInfo::getHeightThan).reversed());
        }else if("mark".equals(sidx)){
            bizRtmIceInfoPage.sort(Comparator.comparing(BizIceInfo::getMark).reversed());
        }
    }

七、数组 List Set 互相转化

//数组转List
List list = Arrays.asList(arr);

//数组转Set
Set<String> set = new HashSet<>(Arrays.asList(arr));

//List转数组
Object[] arr = list.toArray();

//List转Set
Set result = new HashSet(list);

//Set转数组
Object[] arr = set.toArray();

//Set转List
List<String> list = new ArrayList<>(set);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.static:只能用来修饰成员变量,被其修饰的成员变量在被一个对象改变的时候,别的对象在使用它的时候 使用的是...
    衣斤阅读 109评论 0 0
  • 八大基本变量 boolean--1bit byte--8bit short--16bit int--32bit l...
    夜幕繁华阅读 671评论 0 0
  • 背景 在java中float赋值给double,会产生精度问题。 输出为2.0999999046325684。 小...
    我叫小小强阅读 19,495评论 2 23
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,254评论 6 13
  • 想睡,想找个没人认识的地方发泄自我。找啊找啊找到了这里,就想发一些只能对自己说的话。希望没人认识我。累了 睡...
    菠萝房的秘密阅读 182评论 0 0

友情链接更多精彩内容