文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JAVA Collections.sort方法在SSH三大框架中使用中的问题有哪些

2023-06-02 20:48

关注

这篇文章给大家分享的是有关JAVA Collections.sort方法在SSH三大框架中使用中的问题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

      最近,一同学在开发中遇到了SSH三大框架中使用到了Collections.sort方法。然而,他开发环境中的JDK

是1.7.0_64,网站部署的JDK版本是1.7.0_80,他通过开发环境中产生的.class直接去更新网站部署环境中的.class

文件后,程序相关功能模块执行到Collections.sort不继续执行也不报错,而前台ajax因此取不到数据。

类似的远程如下:

public String analysisBillByIllName(){if(!"".equals(queryItem)){List<IllnessPrescriptionFrequency> ipflist = ipfs.findByIllName(queryItem);List<BillView> bvlist = new ArrayList<BillView>();if(ipflist.size()!=0){int sumfreq = 0;for(IllnessPrescriptionFrequency inst:ipflist){if(!"".equals(inst.getId().getBillIds())){String[] bids = inst.getId().getBillIds().split("\\$");for(int i=0;i<bids.length;i++){BillView bv = new BillView();bv.setBillId(Integer.parseInt(bids[i]));bv.setFrequency(inst.getId().getPrescriptionFreequency());sumfreq +=inst.getId().getPrescriptionFreequency();bvlist.add(bv);}}}for(int j=0;j<bvlist.size();j++){for(int k=j+1;k<bvlist.size() -1;k++){if(bvlist.get(j).getBillId().equals(bvlist.get(k).getBillId())){bvlist.get(j).setFrequency(bvlist.get(j).getFrequency()+bvlist.get(k).getFrequency());bvlist.remove(k);}}}System.out.println(">>>>>>>>>>bvlist for2 ipflist:"+bvlist.size());final int sumRatio = sumfreq; Collections.sort(bvlist,new Comparator<BillView>(){//list sortpublic int compare(BillView bv1,BillView bv2){if(bv1.getFrequency()<bv2.getFrequency()){return 1;}if(bv1.getFrequency()==bv2.getFrequency()){return 0;}return -1;}});System.out.println(">>>>>>>>>>bvlist Collections:"+bvlist.size());for(BillView bv:bvlist){Bill qb = bills.findById(bv.getBillId());bv.setBillName(qb.getBillName());float divd = bv.getFrequency()/sumRatio;bv.setUseageRatio(divd);bv.setIllName(queryItem);}flag="data";jsonArray = JSONArray.fromObject(bvlist);System.out.println(jsonArray.toString());return SUCCESS;}else{flag="none";return SUCCESS;}}else{return ERROR;}}

如上程序通过AJAX异步访问,在开发环境中能正常执行;但是使用低版本的JDK编译后的.class文件直接去替换高版本下

的同名.class文件类,程序执行到:

System.out.println(">>>>>>>>>>bvlist for2 ipflist:"+bvlist.size());

而下边的方法不执行也不报错:

Collections.sort(bvlist,new Comparator<BillView>(){//list sortpublic int compare(BillView bv1,BillView bv2){if(bv1.getFrequency()<bv2.getFrequency()){return 1;}if(bv1.getFrequency()==bv2.getFrequency()){return 0;}return -1;}});

程序无法执行Collections.sort,不能执行到函数返回语句,AJAX异步访问获取不到数据,导致前台报错获取数据失败。

    在问题排查过程中,经历了如下过程:

    1、开发环境是windows,网站部署环境是centos6.8,前后重新编译了网站代码,并且重新部署了centos上的网站,

问题还是不执行Collections.sort;

    2、怀疑是阿里云环境安全的限制,关闭了主机防火墙,但是Collections.sort方法还是不执行也不报错;

    3、单独编辑测试Collections.sort的java类分别在windows和centos环境下编译执行,发现Collections.sort在windows和centos上均可以执行,测试程序如下:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;class BillView{private Integer billId;private String billName;private String illName;private int frequency;private float useageRatio;public Integer getBillId() {return billId;}public void setBillId(Integer billId) {this.billId = billId;}public String getBillName() {return billName;}public void setBillName(String billName) {this.billName = billName;}public String getIllName() {return illName;}public void setIllName(String illName) {this.illName = illName;}public int getFrequency() {return frequency;}public void setFrequency(int frequency) {this.frequency = frequency;}public float getUseageRatio() {return useageRatio;}public void setUseageRatio(float useageRatio) {this.useageRatio = useageRatio;}public BillView() {}public BillView(Integer billId, String billName, String illName,int frequency, float useageRatio) {super();this.billId = billId;this.billName = billName;this.illName = illName;this.frequency = frequency;this.useageRatio = useageRatio;}}public class Test {public static void main(String[] args){List<BillView> bvlist = new ArrayList<BillView>();BillView bv1 = new BillView(1, "苹果", null, 1, 0); BillView bv2 = new BillView(2, "香蕉", null, 4, 0);BillView bv3 = new BillView(3, "橘子", null, 2, 0);BillView bv4 = new BillView(4, "梨", null, 9, 0);bvlist.add(bv1);bvlist.add(bv2);bvlist.add(bv3);bvlist.add(bv4);Collections.sort(bvlist,new Comparator<BillView>(){//list sortpublic int compare(BillView bv1,BillView bv2){if(bv1.getFrequency()<bv2.getFrequency()){return 1;}if(bv1.getFrequency()==bv2.getFrequency()){return 0;}return -1;}});System.out.println("collections --->"+bvlist.size());for(BillView bv:bvlist){System.out.println("  "+bv.getBillName()+"  "+bv.getFrequency());}}}

  4、查看windows和centos环境下的JDK版本,发现两边环境JDK版本不一致,windows环境下jdk版本是:1.7.0_64,而

centos环境下JDK版本是1.7.0_80;将windows环境下JDK版本更新到1.7.0_80,并指定开发工具myeclipse的Java编译使用

JDK1.7.0_80版本,重新编译网站源码,在centos上发布网站,发现如下程序顺利执行:

Collections.sort(bvlist,new Comparator<BillView>(){//list sortpublic int compare(BillView bv1,BillView bv2){if(bv1.getFrequency()<bv2.getFrequency()){return 1;}if(bv1.getFrequency()==bv2.getFrequency()){return 0;}return -1;}});

感谢各位的阅读!关于“JAVA Collections.sort方法在SSH三大框架中使用中的问题有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯