结队作业-地铁查询系统(4)

复制代码
package Date;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import Model.GraphModel;
import Model.LineModel;



public class DateInputing {


   public static List<LineModel> FinalLine = new ArrayList<LineModel>();  //地铁线路信息
   public List<GraphModel> FinalGraph = new ArrayList<GraphModel>();  //邻接表信息
   
   public DateInputing() throws IOException, ClassNotFoundException {

      Scanner sc = new Scanner(System.in);

      System.out.println("---");

      Dao da = new Dao();
      int count = 0;
      while(true) {

         LineModel tmpline = da.selectkluxian(++count);


         if(tmpline.getStations().size() == 0) {

            continue;

         }
            if (count == 15) {

               break;

            }
         //存储线路信息

         List<String> LineStation = tmpline.getStations();
         //System.out.println(LineStation.size() + "-");

         String[] tmpdata = new String[tmpline.getStations().size() + 1];
         tmpdata[0] = tmpline.getLineName();
         for (int i = 1; i <= LineStation.size(); i++) {

            tmpdata[i] = LineStation.get(i - 1);

         }

         FinalLine.add(tmpline);

         //将线路信息处理成邻接表
         String tmp1 = tmpdata[1];
         String tmp2 = tmpdata[2];
         //System.out.println(tmp2);
         for (int i = 2; i < tmpdata.length; i++) {

            List<String> stations = new ArrayList<String>();
            List<String> LineName = new ArrayList<String>();
            List<String> stations1 = new ArrayList<String>();
            List<String> LineName1 = new ArrayList<String>();


            GraphModel graphstation = new GraphModel();
            GraphModel graphstation1 = new GraphModel();
            //判断tmp1是否是已经存储过
            int isExit = 0;
            int m = 0;
            for (int j = 0; j < FinalGraph.size(); j++) {
               if (tmp1.equals(FinalGraph.get(j).getStationName())) {
                  isExit = 1;
                  m = j;      //tmp1在FinalGraph哪一个位置,存储到m中
                  break;
               }
            }


            //判断tmp2是否是已经存储过
            int isExit1 = 0;
            int n = 0;
            for (int j = 0; j < FinalGraph.size(); j++) {
               if (tmp2.equals(FinalGraph.get(j).getStationName())) {
                  isExit1 = 1;
                  n = j;
                  break;
               }
            }

            int p = 0;
            if (isExit == 0 && isExit1 == 0) {          //tmp1未存储过,tmp2未存储过
               graphstation.setStationName(tmp1);    //未存储过,新建graphstation类,将数据存入类中,最后压入FinalGraph类
               LineName.add(tmpdata[0]);
               stations.add(tmp2);
               graphstation.setLineName(LineName);
               graphstation.setStations(stations);

               graphstation1.setStationName(tmp2);
               LineName1.add(tmpdata[0]);
               stations1.add(tmp1);
               graphstation1.setLineName(LineName1);
               graphstation1.setStations(stations1);

               FinalGraph.add(graphstation);
               FinalGraph.add(graphstation1);

            } else if (isExit == 0 && isExit1 == 1) {          //tmp1未存储过,tmp2已存储过
               graphstation.setStationName(tmp1);
               LineName.add(tmpdata[0]);
               stations.add(tmp2);
               graphstation.setLineName(LineName);
               graphstation.setStations(stations);

               List<String> station = FinalGraph.get(n).getStations();   //已存储过,则在FinalGraph第n个位置,在相邻战点后面加上
               List<String> linename = FinalGraph.get(n).getLineName();
               station.add(tmp1);
               for (int t = 0; t < linename.size(); t++) {
                  if (tmpdata[0].equals(linename.get(t))) {
                     p = 1;
                     break;
                  }
               }
               if (p == 0)
                  linename.add(tmpdata[0]);
               FinalGraph.get(n).setLineName(linename);
               FinalGraph.get(n).setStations(station);

               FinalGraph.add(graphstation);
            } else if (isExit == 1 && isExit1 == 0) {          //tmp1已存储过,tmp2未存储过
               graphstation.setStationName(tmp2);
               LineName1.add(tmpdata[0]);
               stations1.add(tmp1);
               graphstation.setLineName(LineName1);
               graphstation.setStations(stations1);

               List<String> station = FinalGraph.get(m).getStations();
               List<String> linename = FinalGraph.get(m).getLineName();
               station.add(tmp2);
               for (int t = 0; t < linename.size(); t++) {
                  if (tmpdata[0].equals(linename.get(t))) {
                     p = 1;
                     break;
                  }
               }
               if (p == 0)
                  linename.add(tmpdata[0]);
               FinalGraph.get(m).setLineName(linename);
               FinalGraph.get(m).setStations(station);

               FinalGraph.add(graphstation);
            } else if (isExit == 1 && isExit1 == 1) {          //tmp1,tmp2都已存储过
               List<String> station = FinalGraph.get(m).getStations();
               List<String> linename = FinalGraph.get(m).getLineName();
               station.add(tmp2);
               for (int t = 0; t < linename.size(); t++) {
                  if (tmpdata[0].equals(linename.get(t))) {
                     p = 1;
                     break;
                  }
               }
               if (p == 0)
                  linename.add(tmpdata[0]);
               FinalGraph.get(m).setLineName(linename);
               FinalGraph.get(m).setStations(station);

               List<String> station1 = FinalGraph.get(n).getStations();
               List<String> linename1 = FinalGraph.get(n).getLineName();
               station1.add(tmp1);
               for (int t = 0; t < linename1.size(); t++) {
                  if (tmpdata[0].equals(linename1.get(t))) {
                     p = 1;
                     break;
                  }
               }
               if (p == 0)
                  linename1.add(tmpdata[0]);
               FinalGraph.get(n).setLineName(linename1);
               FinalGraph.get(n).setStations(station1);

            }
            tmp1 = tmp2;
            if (i + 1 < tmpdata.length)
               tmp2 = tmpdata[i + 1];
            else
               break;

         }

      }
      
   }
   
   
   
}
复制代码

 

posted @   lcz111  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示