学习随笔

今天放一段做中国软件杯A08赛题的代码雏形

public class ExampleA extends Thread{
    SynContainer container;

    public ExampleA(SynContainer container){
        this.container=container;
    }

    @Override
    public void run() {
        String filepath="D:\\中国软件杯\\因子5数据集\\part1.txt";
        BufferedReader bufferedReader=null;
        HashMap<Integer, Part> map=new HashMap<>();
        long startTime = System.currentTimeMillis();
        try {

            System.out.println("A开始导入数据");
            bufferedReader=new BufferedReader(new FileReader(filepath));
            String s;

            while ((s = bufferedReader.readLine()) != null){
                int j=0;
                int jj=0;
                Part obj=new Part();
                for (int i = 0; i < s.length(); i++) {
                    if(s.charAt(i)=='|'&&jj==0){
                        obj.PARTKEY=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    }else if (s.charAt(i)=='|'&&jj==1){
                        obj.NAME=s.substring(j,i);
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==2){
                        obj.MFGR=s.substring(j,i);
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==3){
                        obj.BRAND=s.substring(j,i);
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==4){
                        obj.TYPE=s.substring(j,i);
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==5){
                        obj.SIZE=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==6){
                        obj.CONTAINER=s.substring(j,i);
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==7){
                        obj.RETAILPRICE=Double.parseDouble(s.substring(j,i));
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==8){
                        obj.COMMENT=s.substring(j,i);
                        j=i+1;
                        jj++;
                    }
                }
                map.put(obj.PARTKEY, obj);
                obj=null;
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                bufferedReader.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }

        String filepath1="D:\\中国软件杯\\因子5数据集\\lineitem1.txt";
        BufferedReader bufferedReader1=null;
        HashMap<Integer, Lineitem> Lmap=new HashMap<>();
        try {
            bufferedReader1=new BufferedReader(new FileReader(filepath1));
            String s;
            int ii=1;
            while ((s = bufferedReader1.readLine()) != null){
                int j=0;
                int jj=0;
                Lineitem lineitem=new Lineitem();
                for (int i = 0; i < s.length(); i++) {
                    if(s.charAt(i)=='|'&&jj==0){
                        lineitem.ORDERKEY=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    }else if (s.charAt(i)=='|'&&jj==1){
                        lineitem.PARTKEY=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==2){
                        lineitem.SUPPKEY=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    }else if(s.charAt(i)=='|'&&jj==3){
                        lineitem.LINENUMBER=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    } else if(s.charAt(i)=='|'&&jj==4){
                        lineitem.QUANTITY=Integer.parseInt(s.substring(j,i));
                        j=i+1;
                        jj++;
                    } else if(s.charAt(i)=='|'&&jj==5){
                        lineitem.EXTENDEDPRICE=Double.parseDouble(s.substring(j,i));
                        j=i+1;
                        jj++;
                        break;
                    }

                }
                Lmap.put(ii,lineitem);
                lineitem=null;
                ii++;
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                bufferedReader1.close();
            }catch (IOException e){
                e.printStackTrace();
            }
            System.out.println("数据导入结束");
            long endTime1 = System.currentTimeMillis();
            //打印
            long time1= TimeUnit.MILLISECONDS.toSeconds((endTime1 - startTime));
            System.out.println("A程序导入数据时间:" + time1 + "s");
        }

        System.out.println("输入S开始查询:");
        Scanner scanner=new Scanner(System.in);
        String s=scanner.nextLine();

        long startTime1 = System.currentTimeMillis();
        Total[][] total=new Total[5][5];
        for (int i = 1; i <=5 ; i++) {
            for (int j=1;j<=5;j++){
                total[i-1][j-1]=new Total("",0);
                total[i-1][j-1].BRAND="Brand#"+i+j;
                total[i-1][j-1].QUANTITY=0;
            }
        }
//        System.out.println("开始遍历");
        int count=0;
        for(Integer id:Lmap.keySet()){
            if(map.get(Lmap.get(id).PARTKEY)!=null) {
                for (int i=0;i<5;i++) {
                    for (int j=0;j<5;j++) {
                        if (map.get(Lmap.get(id).PARTKEY).BRAND.equals(total[i][j].BRAND)) {
                            total[i][j].QUANTITY = total[i][j].QUANTITY + Lmap.get(id).EXTENDEDPRICE;
                            count++;
                            break;
                        }
                    }
                    if(count==1){
                        break;
                    }
                }

            }
        }
//        System.out.println("遍历结束");
        ArrayList<Total> arrayList=new ArrayList<>();
        for (int i = 0; i <5 ; i++) {
            for (int j=0;j<5;j++){
               arrayList.add(total[i][j]);
            }
        }

        Res res=new Res();
        res.name="线程A";
        res.code=200;
        res.err="查询成功";
        res.dataList=arrayList;
        container.submit(res);

        long endTime = System.currentTimeMillis();
        //打印
        long time= TimeUnit.MILLISECONDS.toSeconds((endTime - startTime1));
        System.out.println("A程序运行时间:" + time + "s");
    }
}
View Code

 

posted @ 2022-05-17 22:02  chenghaixinag  阅读(18)  评论(0编辑  收藏  举报