C# 中的 Java 集合

标签 java c# .net

我正在学习一些数据结构,类(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 , RemoveCount .
IList<T>支持Add , Remove , Count以及通过索引随机访问元素的能力

如果您想了解有关不同集合类型以及何时使用它们的更多信息,请查看 this link

关于C# 中的 Java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526031/

相关文章:

java - 具有不同 minSdkVersion 和 targetSdkVersion 的 Android Java 版本

java - 如何获取能够测试 DAO 类的数据源

c# - 如何在 C# 中旋转位图并最终得到位图?

c# - MessageBox.Show中的参数MessageBoxResult defaultResult是做什么用的?

.net - 寻找一种将大量对象加载到 .NET 中的 IDictionary 的技术

java - 如何在列中显示饼图的图例?

java - Bintray Gradle 插件 - POM 不完整,不会同步到 Maven Central?

c# - Enumerable.Repeat with Union and Take 不返回 'Take' 值

c# - 以编程方式安排/创建 Skype for Business session

适用于 SAP HANA 和 .Net Core 的 .Net 连接器