千家信息网

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

发表于:2024-10-31 作者:千家信息网编辑
千家信息网最后更新 2024年10月31日,这篇文章给大家分享的是有关JAVA Collections.sort方法在SSH三大框架中使用中的问题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近,一同学在开发
千家信息网最后更新 2024年10月31日JAVA Collections.sort方法在SSH三大框架中使用中的问题有哪些

这篇文章给大家分享的是有关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 ipflist = ipfs.findByIllName(queryItem);                        List bvlist = new ArrayList();                        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>>>>>>>>>bvlist for2 ipflist:"+bvlist.size());                                final int sumRatio = sumfreq;                                 Collections.sort(bvlist,new Comparator(){//list sort                                        public int compare(BillView bv1,BillView bv2){                                                if(bv1.getFrequency()>>>>>>>>>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(){//list sort                                        public int compare(BillView bv1,BillView bv2){                                                if(bv1.getFrequency()

程序无法执行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 bvlist = new ArrayList();                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(){//list sort                        public int compare(BillView bv1,BillView bv2){                                if(bv1.getFrequency()"+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(){//list sort                                        public int compare(BillView bv1,BillView bv2){                                                if(bv1.getFrequency()

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

0