我正在学习一些数据结构,类(class)语言是 Java,但我是 C# 人员。
这是代码:
public Collection <Vertex> vertices()
{
return graph.values();
}
Vertex is a class but how can I return a Collection in C#? Ty!
Edit: I don't know if it will help but here is the class Vertex.(Code already in C#) Comments are in german.
public class Vertex : IComparable //Knotenklasse
{
public string name; // Name des Knoten
public List<Edge> edges; // Nachbarn als Kantenliste
public int nr; // Knotennummer
public int indegree; // Eingangsgrad
public bool seen; // Wurde der Knoten schon überprüft?
public int dist; // Kosten für den Knoten
public Vertex prev; // vorheriger Knoten
public Vertex(string s)
{
this.name = s;
edges = new List<Edge>();
}
public bool hasEdge(Vertex w)
{
foreach (Edge e in edges)
{
if(e.dest == w)
{
return true;
}
}
return false;
}
public int CompareTo(Vertex d)
{
if(this.dist > d.dist)
{
return 1;
}
else if(this.dist < d.dist)
{
return -1;
}
else
{
return 0;
}
}
}
public class Edge // Kantenklasee
{
public double cost; // Kosten
public Vertex dest; // Zeiger auf den nächsten Knoten
public Edge(Vertex d,double c)
{
this.dest = d;
this.cost = c;
}
}
ps:C#中的类图
public class Graph
{
private Dictionary<Vertex, string> graph;
public Graph(Vertex d, string s)
{
graph = new Dictionary<Vertex, string>();
}
}
最佳答案
Dictionary.Values返回 ValueCollection 。 您可以直接使用它,也可以将其转换为 .NET 中的许多内置集合类型。
通常,您应该返回一种尽可能通用的类型,即只知道足够的返回数据的类型。
public ICollection<Vertex> vertices()
{
return graph.values();
}
public IList<Vertex> vertices()
{
return graph.values().ToList();
}
ICollection<T>
支持Add
, Remove
和Count
.
IList<T>
支持Add
, Remove
, Count
以及通过索引随机访问元素的能力
如果您想了解有关不同集合类型以及何时使用它们的更多信息,请查看 this link
关于C# 中的 Java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526031/