十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
下面是我修改了滴源码,是基于一张简单的地图,在地图上搜索目的节点,依次用深度优先、广度优先、Dijkstra算法实现。
创新互联公司-专业网站定制、快速模板网站建设、高性价比黄梅网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式黄梅网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖黄梅地区。费用合理售后完善,10年实体公司更值得信赖。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Stack;
/**
*
* @author yinzhuo
*
*/
public class Arithmatic {
boolean flag = true;
// 一张地图
static int[][] map = new int[][]// 地图数组
{
{ 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
Java代码注释写的多,会影响到编译效率,但是不会影响到执行效率。
Java代码是先编译成字节码,然后被JVM解释执行的。
我做了个实验
TimeDemo 类
import java.util.ArrayList;
public class TimeDemo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
ArrayListInteger list = new ArrayListInteger();
for (int i = 0; i 1000000; i++) {
list.add(i);
}
long end = System.currentTimeMillis();
System.out.println("本次执行耗费了"+(end-start)+"毫秒");
}
}
TimeDemo2
import java.util.ArrayList;
public class TimeDemo2 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
ArrayListInteger list = new ArrayListInteger();
for (int i = 0; i 1000000; i++) {
list.add(i);
}
//用java.io生成了很多行的注释,
//注释
//注释
//注释
//注释
//注释
long end = System.currentTimeMillis();
System.out.println("本次执行耗费了"+(end-start)+"毫秒");
}
}
运行结果
当注释行数是1~1万行的时候. 能较快的编译
当注释行数达到1百万的时候,编译稍微慢一点
当注释行数达到1千万行的时候, CPU占用100%,卡了进1分钟也没有编译完成,只好强行关闭
结论:
简单明了的注释有助于程序猿对代码的读写
只有当注释行数极大的时候,才会严重的影响编译速度。 但不会影响执行速度
Java代码之于java程序员而言就是左膀右臂,java代码写的好的java程序员明显更是企业的欢迎,一个优秀的java程序员的考核标准之一也是看他的编程水平。
其实有的java程序员java代码会受到大家的追捧,是因为他在写代码时注意的细节往往多于那些不怎么关注java代码编程细节的程序员,俗话说:“细节决定成败”,那么如何写出好的java代码呢?IT培训介绍一起来讨论下:
1.重视注释
有的java程序员在写代码时,从来没有想过要在java代码后加上相关的注释,甚至是上万行的代码也没有想过加上注释,这就存在很大的问题,不说你的代码会跟其他人分享讨论,就你自己回顾你是怎么写好这篇代码的,你也是半天无法理出头绪,这就为维护和修改等等工作添加了很大的麻烦。所以,要想写出好的java代码,一定从简短的java代码编写开始注重在java代码后面加上相应的注释,养成良好的习惯。
2.重视排版整洁
看很多java程序员的排版总觉得在欣赏一幅艺术品,但是看到一些java程序员的排版却总觉得无力吐槽。同样是编写代码,但是给人的视觉体验是相当的不同,当然好的java代码给人的享受也是美的,所以要想写出好的代码,一定要重视排版整洁。
3.注重命名规则
现在在一个团队开发中,都会提前定制一个统一的命名规则,这样利于提高工作效益。但是很多java程序员是缺乏这个意识的,每次敲代码,更喜欢按照自己惯常的方式老命名模块、函数,这样是方便了自己,但是忽视团队协作,所以在日常工作中,特别是团队工作中一定要重视命名规则。
4.养成备份习惯
备份的重要性不用小编强调,相必你也知道。但是有的java程序员就是没有养成这样的好习惯,每次敲完代码就不记得随手保存,每次等到除了事故,比如电脑出了故障,辛辛苦苦敲打的java代码没保存找不回来的情况下就开始懊恼,与其这样还不如在一开始就养成良好的备份习惯,这样也方便自己日后查找利用。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Calendar;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class TestWindow {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 定义窗体,标题
*/
JFrame frame=new JFrame("java");
/*
* 定义菜单
*/
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("文件(F)");
menuFile.setMnemonic(KeyEvent.VK_F);
menuBar.add(menuFile);
JMenuItem exitMenu=new JMenuItem("退出");
menuFile.add(exitMenu);
frame.setJMenuBar(menuBar);
/*
*菜单事件
*/
exitMenu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
/*
* 标题栏的叉的退出事件
*/
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
/*
* 布局,采用简单的Box+Flow的布局,可以采用Grid或者更复杂的GridBagLayout
*/
JPanel panelMain=new JPanel();
panelMain.setLayout(new BoxLayout(panelMain, BoxLayout.Y_AXIS));
frame.getContentPane().add(panelMain,BorderLayout.CENTER);
//添加组件
JPanel line1Panel=new JPanel();
JPanel line2Panel=new JPanel();
JPanel line3Panel=new JPanel();
JPanel line4Panel=new JPanel();
line1Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
line2Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
line3Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
line4Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panelMain.add(line1Panel);
panelMain.add(line2Panel);
panelMain.add(line3Panel);
panelMain.add(line4Panel);
line1Panel.add(new JLabel("姓名:"));
JTextField txtName=new JTextField();
txtName.setColumns(10);
line1Panel.add(txtName);
line1Panel.add(new JLabel("密码:"));
JPasswordField txtPass=new JPasswordField();
txtPass.setColumns(10);
line1Panel.add(txtPass);
line2Panel.add(new JLabel("性别:"));
JRadioButton radioM=new JRadioButton("男");
JRadioButton radioF=new JRadioButton("女");
line2Panel.add(radioM);
line2Panel.add(radioF);
ButtonGroup group = new ButtonGroup();
group.add(radioM);
group.add(radioF);
Object[] years=new Object[50];
java.util.Calendar cal= Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
for(int i=0;i50;i++)
years[i]=new Integer(year-i);
Object[] months=new Object[12];
for(int i=0;i12;i++)
months[i]=new Integer(i+1);
JComboBox yearList=new JComboBox(years);
JComboBox monthList=new JComboBox(months);
line3Panel.add(new JLabel("出生年月:"));
line3Panel.add(yearList);
line3Panel.add(new JLabel("年"));
line3Panel.add(monthList);
line3Panel.add(new JLabel("月"));
JCheckBox chkRead=new JCheckBox("读书");
JCheckBox chkMovies=new JCheckBox("电影");
line4Panel.add(new JLabel("爱好:"));
line4Panel.add(chkRead);
line4Panel.add(chkMovies);
frame.pack();
frame.setVisible(true);
}
}