我有一个字符串列表,我正在使用它们对它们进行排序:
if (SortedList[x].str[p].CompareTo(SortedList[x + 1].str[p]) > 0) //Sort the list
{
Data aux = SortedList[x];
SortedList[x] = SortedList[x + 1];
SortedList[x + 1] = aux;
}
str
是字符串列表,但我必须将该列表转换为List<char[]>
,现在我无法使用str.CompareTo()
方法,因为这只是字符串...
我正在考虑创建一个字符串列表,将char[]
转换为string
并使用我正在使用的CompareTo()
方法对其进行排序,然后再创建另一个List<char[]>
通过转换已排序的字符串列表。
是否有更有效的方法来排序List<char[]>
?
答案 0 :(得分:1)
您是否尝试过使用LINQ?
stopped
输出:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var charList = new List<char[]>();
// Initialize list of char array
char[] array1 = { 's', 'a', 'm' };
char[] array2 = { 's', 'm', 'i', 't', 'h' };
char[] array3 = { 'c', 'o', 'o', 'l'};
// Add them
charList.Add(array1);
charList.Add(array2);
charList.Add(array3);
Console.WriteLine("--Before sorting--");
foreach (char[] item in charList) {
Console.WriteLine(item);
}
// Sorting
charList = charList.OrderBy(a => new string(a)).ToList();
Console.WriteLine("--After sorting--");
foreach (char[] item in charList) {
Console.WriteLine(item);
}
}
}
在此测试:https://dotnetfiddle.net/wcYSAE
编辑:虽然根据你的问题我不清楚,通常当我必须对List进行排序时,我更喜欢使用C#提供的内容而不是重新发明轮子。关于性能,其他C#专家可以为我们解答。
答案 1 :(得分:0)
为什么不使用Sort?如Aominè
所述// Declare Sentence Variable
string sentence = "The quick brown fox jumps over the lazy dog";
// Initialize New List of type char
List<char> charList = new List<char>();
// Remove Spaces and Lowercase all Letters and Add to List
charList.AddRange(sentence.Replace(" ", string.Empty).ToLower());
// Sort List<char>()
charList.Sort();
// Output Statements
Console.WriteLine($"Before: {sentence}");
Console.WriteLine($"After: {new string(charList.ToArray())}");
输出:
Before: The quick brown fox jumps over the lazy dog
After: abcdeeefghhijklmnoooopqrrsttuuvwxyz