как записать миллиарды данных в три с меньшим объемом памяти
Я хочу извлечь некоторую информацию из новостей, таких как названия компаний, поэтому я записываю миллиарды названий компаний в три, но для этого требуется много памяти и исключение из памяти, я не знаю, как ее решить, поэтому кто угодно могу помочь, заранее спасибо.
public class Node
{
public char Value { get; set; }
public List<Node> Children { get; set; }
public int Depth { get; set; }
public string Code { get; set; }
public bool Terminal { get; set; }
public Node(char value, int depth)
{
Value = value;
Depth = depth;
Children = new List<Node>();
}
public Node FindChildNode(char c)
{
foreach (var child in Children)
if (child.Value == c)
return child;
return null;
}
}
public class Trie
{
private Node _root;
public Trie()
{
_root = new Node('^',0);
}
public Node Prefix(string s)
{
var currentNode = _root;
var result = currentNode;
foreach (var c in s)
{
currentNode = currentNode.FindChildNode(c);
if (currentNode == null)
break;
result = currentNode;
}
return result;
}
public void Insert(string randomLength,string code)
{
var commonPrefix = Prefix(randomLength);
var current = commonPrefix;
for (var i = current.Depth; i < s.Length; i++)
{
var newNode = new Node(s[i], current.Depth + 1);
if (i+1==s.Length)
{
newNode.Terminal = true;
newNode.Code = code;
}
current.Children.Add(newNode);
current = newNode;
}
}
}
Trie t = новый Trie ();
t.Insert ( "С", "ABCG00DFD");
Вышеприведенный оператор запускает 1000000000 циклов, и «C» можно заменить другой строкой с разной длиной, так как цикл увеличивается, он выбрасывает исключение памяти, так как его избежать или изменить?