.net 列表<;T>;。排序而不是按字母顺序排序
有人向我提出这个琐碎的问题,我认为这太简单了。那个人让我解释为什么这个列表没有按字母顺序排序。我认为这是一个骗人的问题,直到我把它扔进一个小存根项目,他们是对的…没有骗人的,它不按字母顺序排序。我在谷歌上搜索,我读到的所有信息都说Sort()会按我预期的方式工作。所以Edjumake培养了我天才。我显然没有答案.net 列表<;T>;。排序而不是按字母顺序排序,.net,c#-4.0,.net,C# 4.0,有人向我提出这个琐碎的问题,我认为这太简单了。那个人让我解释为什么这个列表没有按字母顺序排序。我认为这是一个骗人的问题,直到我把它扔进一个小存根项目,他们是对的…没有骗人的,它不按字母顺序排序。我在谷歌上搜索,我读到的所有信息都说Sort()会按我预期的方式工作。所以Edjumake培养了我天才。我显然没有答案 string str_animals = "hyena, cat, elephant, dog, iguana"; List<string> lst_animals = ne
string str_animals = "hyena, cat, elephant, dog, iguana";
List<string> lst_animals = new List<string>(str_animals.Split(','));
lst_animals.Sort();
string str_animals=“鬣狗、猫、大象、狗、鬣蜥”;
List lst_animals=新列表(str_animals.Split(',');
lst_animals.Sort();
排序后我的名单是:猫,狗,大象,鬣狗,鬣狗????鬣狗和鬣蜥坏了
MSDN说“此方法使用Array.Sort,它使用快速排序算法。此实现执行不稳定排序;即,如果两个元素相等,它们的顺序可能不会保留。相反,稳定排序保留相等元素的顺序”但是鬣狗和鬣蜥是不平等的,所以我认为不稳定的种类并不重要
我错过了什么
谢谢您需要在拆分后修剪值,因为空格将取消排序(使
hyena
位于iguana
之后,因为hyena
不是以空格开头的)
List lst_animals=新列表(str_animals.Split(',).Select(x=>x.Trim());
您需要在分割后修剪值,因为空格将取消排序(使hyena
位于iguana
之后,因为hyena
不以空格开头)
List lst_animals=新列表(str_animals.Split(',).Select(x=>x.Trim());
您正在使用Split,它将字符串拆分为不同的字符串。
鬣狗是第一个,没有前面的空格。
其他的都有一个空间在前面,这会影响你的排序
因此,在分割原始字符串后,应通过修剪字符串来删除前导空格
var animals = str_animals.Split(',').Select (a => a.Trim());
您正在使用Split,它将字符串拆分为不同的字符串。 鬣狗是第一个,没有前面的空格。 其他的都有一个空间在前面,这会影响你的排序 因此,在分割原始字符串后,应通过修剪字符串来删除前导空格
var animals = str_animals.Split(',').Select (a => a.Trim());
简单使用
List<string> lst_animals = new List<string>(str_animals.Split(", "));
List lst_animals=新列表(str_animals.Split(“,”);
“,”中的空格很重要
就像其他人指出的那样,只有用逗号分隔的字符串才会有前缀空格。关于排序,字母前面有一个空格。只需使用
List<string> lst_animals = new List<string>(str_animals.Split(", "));
List lst_animals=新列表(str_animals.Split(“,”);
“,”中的空格很重要
就像其他人指出的那样,只有用逗号分隔的字符串才会有前缀空格。关于排序,字母前有一个空格。abcdefgHIjklmnopqrstuvwxyzI我有点困惑…你说的结果是猫、狗、大象、鬣狗、鬣蜥…按字母顺序排序…对不起,伙计们,错了。这确实是一个错误,问题已经被更新了。看起来你被“,”分开了,但你正在使用“,”作为分隔符。因为您的字符串列表将是“鬣狗”、“猫”、“大象”、“狗”、“鬣狗”(注意空格),因此“鬣狗”位于“鬣狗”之后。只需使用list lst_animals=new list(str_animals.Split(“,”.ToCharArray(),StringSplitOptions.removemptyEntries))我有点困惑…你说结果是猫,狗,大象,鬣狗,鬣狗…这是按字母顺序排列的…对不起,伙计们,错了。这确实是一个错误,问题已经被更新了。看起来你被“,”分开了,但你正在使用“,”作为分隔符。因为您的字符串列表将是“鬣狗”、“猫”、“大象”、“狗”、“鬣狗”(注意空格),因此“鬣狗”位于“鬣狗”之后。只需使用list lst_animals=new list(str_animals.Split(“,”.ToCharArray(),StringSplitOptions.removemptyEntries))代码>确定,但当我使用调试器可视化时,它们“似乎”没有显示前导空格???等待我错了!!空间就在那里,我只是俯瞰着它们。坏眼睛!坏眼睛!!!好的,但当我使用调试器可视化它时,它们“似乎”没有显示前导空格???等待我错了!!空间就在那里,我只是俯瞰着它们。坏眼睛!坏眼睛!!!好吧,你比我先做到了。:)好吧,你比我先做到了。:)我不认为use可以在拆分中做到这一点,因为它正在寻找一个文本,而空间太大??我不认为use可以在拆分中做到这一点,因为它正在寻找一个文本,而空间太大??