将文本文件转换为图形
本文关键字:图形 转换 文件 文本 | 更新日期: 2023-09-27 18:25:38
我正试图将文本文件转换为图形,但当我尝试使用下面的values函数打印字典中的值时,它会打印类似于"System.Collections.Generic.List'1[System.String]"的内容!有人能告诉我我的代码出了什么问题吗?!这是文本文件的格式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Demo
{
public class Graph
{
Dictionary<string, List<string>> st;
static int count;
static int count1;
public Graph()
{
st = new Dictionary<string, List<string>>();
}
public Graph(string filename, string delimeter)
{
st = new Dictionary<string, List<string>>();
FileStream fs = new FileStream(filename, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while(sr.Peek()!=-1)
{
string line = sr.ReadLine();
char r;
r = Convert.ToChar(delimeter);
string [] names = line.Split(r);
for(int i=1;i<names.Length;i++)
{
addEdge(names[1], names[i]);
}
}
sr.Close();
}
public void addEdge(string a, string b)
{
if(!st.ContainsKey(a))
{
addVertex(a);
}
if(!st.ContainsKey(b))
{
addVertex(b);
}
st[a].Add(b);
st[b].Add(a);
count1++;
}
public void addVertex(string v)
{
isContainV(v);
st.Add(v, new List<string>());
count++;
}
public int vertexcount()
{
return count;
}
public int edgeCount()
{
return count1;
}
public void edge()
{
foreach (string key in st.Keys)
{
Console.WriteLine(key);
}
}
public void values()
{
foreach (List<string> temp in st.Values)
{
Console.WriteLine(temp);
}
}
public bool isContainV(string v)
{
if(!st.ContainsKey(v))
{
return false;
}
return true;
}
public IEnumerable<string> adjacentTo(string v)
{
return st[v];
}
}
}
您不能编写字符串的集合,您需要添加另一个循环来编写每个字符串。
foreach (List<string> temp in st.Value)
{
foreach (string s in temp)
{
Console.WriteLine(s);
}
}
如果你只想让整个字典有一个循环,试试这个。。。
foreach (KeyValuePair<string, List<string>> entry in st)
{
Console.WriteLine(entry.Key);
foreach (string s in entry.Value)
{
Console.WriteLine(s);
}
}