我试图将文本文件转换为图形,但是当我尝试使用values函数(下面)打印字典中的值时,它会打印类似于" System.Collections.Generic.List的内容。 ' 1 [System.String]"!有人能告诉我代码中的错误吗?! This is the format of the text file
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];
}
}
}
答案 0 :(得分:1)
你不能写一个字符串集合,你需要添加另一个循环来写每个字符串。
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);
}
}