?? 公交換乘算法.txt
字號(hào):
// 篩選站點(diǎn)規(guī)則:如果該站點(diǎn)距離初始站點(diǎn)距離比出發(fā)站點(diǎn)的距離初始站點(diǎn)的距離大,那么就把該站點(diǎn)存儲(chǔ)到
// firLineStaList,反之就做反車了,所以那些站點(diǎn)不必加入firLineStaList中
if (i > transferStaNo) {
//
firLineStaList.add(map);
}
}
}
}
if (secTrainLine != null) {
Iterator secIt = secTrainLine.iterator();
while (secIt.hasNext()) {
line = (HashMap) secIt.next();
trainNo = (String) line.get("busLine");
transferStaNo = (Integer) line.get("stationNo");
station = stationsOfLine.get(trainNo);
Iterator it = station.iterator();
while (it.hasNext()) {
Map map = (Map) it.next();
int i = (Integer) map.get("stationNo");
if (i < transferStaNo) {
secLineStaList.add(map);
}
}
}
}
}
/**
*
* create date:2008-5-19 author:Administrator
*
* @return
*/
private ArrayList <Map> checkCrossLine() {
ArrayList <Map> crossLineList = new ArrayList <Map>();// 相交線路的集合,即是所有的換乘方法的集合
ArrayList <Map> lsStart = firLineStaList;// 經(jīng)過(guò)起點(diǎn)站的所有車次的經(jīng)停站站信息。
ArrayList <Map> lsEnd = secLineStaList;// 經(jīng)過(guò)目的站的所有車次的經(jīng)停站站信息。
if (lsStart != null && !lsStart.isEmpty() && lsEnd != null
&& !lsEnd.isEmpty()) {
for (Map <String, String> mapStart : lsStart) {
for (Map <String, String> mapEnd : lsEnd) {
if (IsInTheSameCity(mapStart.get("up"), mapEnd.get("up"))) {
// 將相交線路信息存入crossLine,存儲(chǔ)某一個(gè)具體的換乘方法
Map <String, String> crossLine = new HashMap <String, String>(
4, 0.8f);
// 把第一次要做到車次放如crossLine
crossLine.put("firstLine", mapStart.get("busLine"));
// 把要換乘的車次放入到crossLine
crossLine.put("secondLine", mapEnd.get("busLine"));
// 把中轉(zhuǎn)站點(diǎn)放入到crossLine
crossLine.put("transferSta", mapEnd.get("up"));
// crossLine.put("transferSta",(String)startInf.get("up"));
// 將包含相交線路信息的HashMap存入List
// 也即是把具體某個(gè)換乘方法放入crossLineList
crossLineList.add(crossLine);
} else {
continue;
}
}
}
} else {
crossLineList = null;
}
return crossLineList;
}
private boolean IsInTheSameCity(String station1, String station2) {
if (station1.contains(station2) | | station2.contains(station1)) {
// System.out.println(station1+"#########"+station2);
return true;
} else {
return false;
}
}
public ArrayList <Map> getSchemaOfTransfer() {
this.getStationsInLine(this.start, this.whither);
return this.checkCrossLine();
}
public static void main(String[] args) {
BusTransfer tb = new BusTransfer("前門", "天安門西");
// tb.getSchemaOfTransfer();
for (Map map : tb.getSchemaOfTransfer()) {
System.out.println(map);
System.out.println("您好,您可以先乘坐 " + map.get("firstLine") + " 到 "
+ map.get("transferSta") + " 然后換乘 " + map.get("secondLine")
+ " 便可到達(dá),不要錯(cuò)過(guò)站吆 !");
}
// System.out.println(tb.secLineStaList.size());
}
private Connection getConnection() {
Connection con = null;
String url = "jdbc:mysql://127.0.0.1:3306/souwhat?autoReconnect=true&useUnicode=true&characterEncoding=GBK&mysqlEncoding=GBK";
String user = "root";
String psWord = "";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("The Exception at load the Driver");
}
try {
con = DriverManager.getConnection(url, user, psWord);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("The Exception at creat the connection");
}
return con;
}
private void closeConnection(Connection conn) throws Exception {
if (conn != null) {
conn.close();
}
}
private List executeQuery(String sql) throws Exception {
// System.out.println("executeQuery(sql): " + sql);
List list = new ArrayList();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.createStatement();
System.out.println(sql);
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
Map map = new HashMap();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
// 每一行所有列存入HashMap中
map.put(rsmd.getColumnName(i), rs.getObject(i));
}
// 所有行存入List中
list.add(map);
}
} catch (Exception e) {
System.out.println("數(shù)據(jù)庫(kù)查詢出錯(cuò)!");
e.printStackTrace();
} finally {
if (rs != null)
rs.close();
closeConnection(conn);
}
return list;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -