⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 map.java

📁 用Java部分实现了电子导航仪的功能
💻 JAVA
字号:
package shiyan3;




import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;



public class Map implements Serializable {
private List2D map;
private ArrayList<String> idList;
public Map(){
	map=new List2D();
	idList=new ArrayList<String>();
}
public void addDot(String id,int[] length){
	map.addDot(length);
	idList.add(id);
}
public void addDot(){
	map.addDot();
}
public void addLine(int dot1,int dot2,int length){
	map.addLine(dot1, dot2, length);
}
public void deleteDot(int index){
	map.deleteDot(index);
	idList.remove(index);
}
public void deleteDot(String id){
	int index=idList.indexOf(id);
	idList.remove(index);
}
public int getSize(){
	return map.size();
	
}
public ArrayList<Integer> getArray(int index){
	return map.getArray(index);
}
public ArrayList<Integer> getPath(int dot1,int dot2){
	ArrayList<Integer> preDot=new ArrayList<Integer>();//记录先序点
	ArrayList<Integer> d=new ArrayList<Integer>();//记录最短距离
    ArrayList<Integer> dotArray=new ArrayList<Integer>();
	for (int i = 0; i < map.size(); i++) {//初始化predot
		preDot.add(-1);
		d.add(-1);
		if(map.getLength(dot1, i)>0){
		dotArray.add(i);
	}}
	preDot.set(dot1, dot1);
	d.set(dot1, 0);
	
	
	/*依次取出与已经确定最短路径相连并且还没有确定最小路径的点中,
	 * 计算(d+这个路径)并找到最短的那条加到以确定路径的数组中,
	 * 依次计算,直到dot2也在这个数组中为止
	 */
	
	while(preDot.get(dot2)==-1){
	int minD=Integer.MAX_VALUE;
	int indexj=-1;
	int indexi=-1;
	for (int i = 0; i < map.getArray(0).size(); i++) {
		
		if (d.get(i)!=-1) {
			for (int j = 0; j < map.getArray(i).size(); j++) {
				if (map.getArray(i).get(j)!=-1&&d.get(j)==-1&&d.get(i)

+map.getLength(i, j)<minD) {
					minD=d.get(i)+map.getLength(i, j);
					indexj=j;
					indexi=i;
				}
			}
		}
		
	}
	preDot.set(indexj, indexi);
	d.set(indexj, minD);
	}
	int dot=dot2;
ArrayList<Integer> result=new ArrayList<Integer>();//输出点的顺序
result.add(dot);
	while(dot!=dot1){
		dot=preDot.get(dot);
		result.add(dot);
	}
	for (int i = 0; i < result.size()/2; i++) {
		int j=result.size()-i-1;
		int mid=result.get(j);
		result.set(j, result.get(i));
		result.set(i, mid);
	}
	return result;
}

public static void main(String[] args) throws IOException {
	Map m=new Map();
	m.addDot("A", new int[]{0});
	m.addDot("B", new int[]{33});
	m.addDot("C", new int[]{-1,34});
	m.addDot("D", new int[]{-1,-1,49});
	m.addDot("E", new int[]{-1,-1,65,32});
	
	System.out.println(m.getPath(4,0));

	  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -