根据搜索索引使用情况优化.NET功能

时间:2015-01-22 14:41:07

标签: .net arrays performance search optimization

我有一个函数,我写了一个函数来搜索一个特定单词出现的数组。该函数接受一系列文本行和一个目标关键字,它必须搜索并返回包含目标词的ines的arraylist。例如,如果array是(每行是数组的下标):

测试.net应用程序 大棕猫 样品申请 搜索索引优化 寻找猫 大粉红色的大象

并且函数调用是FindLinesInArray(arr,“cat”),然后函数将返回并且数组列表有两行:

大棕猫 寻找猫

功能如下:

Function FindLinesInArray(ByRef arr() As String, ByVal target As String) As ArrayList
    Dim idx As Integer
    Dim temp As String = ""
    Dim alist As ArrayList = New ArrayList()

    Try
        For idx = 0 To arr.Length - 1
            If arr(idx).ToString().ToLower().IndexOf(target) <> -1 Then
                temp = arr(idx).ToString().ToLower().Trim()
                alist.Add(temp)
            End If
        Next
    Catch ex As Exception
        MsgBox(ex.Message & " - " & ex.StackTrace)
    End Try

    Return alist

End Function

我的问题是如何根据搜索索引的使用来优化此功能。我正在运行的程序在大型数组上多次调用此函数,我想知道是否有更好的方法来执行此操作

1 个答案:

答案 0 :(得分:-1)

这是c#
我是从内存中做到的,所以它可能有一些语法错误

public class SearchLine 
{
    private HashSet<string> words;
    public void ContainsWords (HashSet<string> FindWords)
    {
        if (words == null)
        {
            words = new HashSet<string>();
            foreach (string s in Line.Split(" "))
            {
               if(!string.IsNullOrEmpty(s))
                  words.Add(s.Trim());
            }
        }
        return FindWords.Overlaps(words);
    }
    public string Line { get; private set;
    public SearchLine(string line) 
    {
        Line = line;
    }
}