java实体类的属性定义

一个多月前从零开始学java开发,关于实体类的属性定义不太清楚怎么入手

img


以上图为例,注:图片是tsv文件打开后的截图,内容第一行和第一列不参加计算。如果想通过文件路径读取上方文件内的内容,并使用Dijkstra算法求出【S】起始点到【E】结束点的最短路径及最短路径总距离,在读入文件内容时应该定义几个实体类,以及应该分别给各实体类定义什么样的属性,请简单介绍一下给个思路,请不要直接给码,我想了解的重点是如何根据文件内容定义对象和通过什么样的思路去定义对象的属性!望告知

你得给出你这个是平面表格还是什么东西,对吧?不然的话大家都不知道你说的怎么走。

一个解析类 负责解析tsv 文件,
一个节点类(xy坐标 和数值)
一个节点的集合类(或者字节一个二维数组也可以,简单点), 存储多个节点 (就是 第一个解析类 解析的结果)
一个路径类(节点的LIst集合,或者一维数组)
一个算法类 实现(Dijkstra), 输入一个 集合, 返回一条路径

做题现在还不合适你,就算把这题给你,你还是不理解
你要理解不光是实体类部分,还有其他Java最基础得东西,然后再深入
再回来就简单了

这个问题不难的啊,这个实体类可以这样描述,设实体类名为Node ,则一个属性为节点的名称name,如表格中的A1 B2 数字表示行号,一个属性为下一个节点的名称,下一个节点可能有多个,一个属性为当前节点与下一个节点距离

定义一个实体类就行了,实体类里面多个属性字段,每个属性字段对应一列

首先,对于这个问题,我们需要根据图中内容来定义实体类。其中每一行表示一个有向边,包括起始节点、目标节点和边的权重。那么我们可以定义三个实体类:Node、Edge和Graph。

Node类
我们可以定义一个Node类来表示图中的节点,其中包含节点的名称(id)和节点到起始点(S)的距离(distance)两个属性。


java
public class Node {
  private String id; // 节点id
  private double distance; // 起始点(S)到该节点的距离

  // 构造方法、getter和setter省略
}

Edge类
我们可以定义一个Edge类来表示图中的边,其中包含起始节点(startNode)、目标节点(endNode)和边的权重(weight)三个属性。


java
public class Edge {
  private Node startNode; // 起始节点
  private Node endNode; // 目标节点
  private double weight; // 边的权重

  // 构造方法、getter和setter省略
}

Graph类
最后,我们可以定义一个Graph类来表示这个有向图,其中包含所有的节点(nodes)和所有的边(edges)两个属性。


java
public class Graph {
  private List<Node> nodes; // 所有的节点
  private List<Edge> edges; // 所有的边

  // 构造方法、getter和setter省略
}

有了这三个实体类,我们就可以根据文件内容来构建这个有向图了。

在读取文件内容时,我们可以按行读取文件内容,然后解析行中的3个值:起始节点ID、目标节点ID和边的权重。根据这些值,我们可以创建一个Edge对象,并将其放入Graph中。

当我们需要计算S到E的最短路径时,可以从Graph中找到起始节点S,并将其distance值设置为0。然后使用Dijkstra算法遍历所有的节点,并更新它们到S的距离值,最后得到E节点的距离值即为S到E的最短路径长度。

总结一下,根据文件内容定义对象属性的思路应该是:

根据文件内容定义实体类;
在读取文件内容时,解析每一行的值,并构建实体类对象;
通过实体类对象构建整个数据结构(例如有向图);
根据需要,对数据结构进行操作和计算。
希望这些思路对您有所启发!

你这个是最短路径算法,不适合作为研究面向对象。建议你去研究图书管理系统、学生管理系统这些常见的入门项目,算法是为了解决问题的,一般面向过程编程,用面向对象编程太麻烦了,而且有点强行拆分的意味在里面