结队作业-地铁查询系统(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; } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人