C#排序与Java集合。排序给出不同的结果
C#代码:C#排序与Java集合。排序给出不同的结果,java,c#,sorting,collections,Java,C#,Sorting,Collections,C#代码: public class Test { public static void Main() { List<string> list = new List<string> { "johnsmith@mail.com", "john_newyork@mail.com", "john00@mail.com" }; list.Sort(); for(int i=0;i<list.Count;i++)
public class Test
{
public static void Main()
{
List<string> list = new List<string> { "johnsmith@mail.com", "john_newyork@mail.com", "john00@mail.com" };
list.Sort();
for(int i=0;i<list.Count;i++){
Console.WriteLine(list[i]);
}
}
}
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
List<String> list = new ArrayList<String>();
list.add("johnsmith@mail.com");
list.add("john_newyork@mail.com");
list.add("john00@mail.com");
Collections.sort(list);
System.out.println(list);
}
}
在c#中,可以使用StringComparer
指定字符串之间的比较方式。要实现与Java中相同的行为,需要使用StringComparer.Ordinal
using System;
using System.Collections.Generic;
namespace ConsoleApp
{
public class Test
{
public static void Main()
{
var list = new List<string> { "johnsmith@mail.com", "john_newyork@mail.com", "john00@mail.com" };
list.Sort(StringComparer.Ordinal);
foreach (var element in list)
{
Console.WriteLine(element);
}
}
}
}
另请参见,以获取详细示例:要按ASCII值排序,请使用StringComparer.Ordinal
list.Sort(StringComparer.Ordinal)代码>谢谢。在没有任何StringComparer的情况下,list.sort()在默认情况下是如何工作的?@soup\u boy这与调用list.sort(StringComparer.CurrentCulture)
是一样的。顺便说一句,您可以将Java更改为按区域性信息排序,但Java似乎没有任何用于Comparator
的常量,因此,您必须实现自己的方法,使用java.text.Collator
(使用其.code>getInstance
方法)来进行字符串比较。
using System;
using System.Collections.Generic;
namespace ConsoleApp
{
public class Test
{
public static void Main()
{
var list = new List<string> { "johnsmith@mail.com", "john_newyork@mail.com", "john00@mail.com" };
list.Sort(StringComparer.Ordinal);
foreach (var element in list)
{
Console.WriteLine(element);
}
}
}
}
john00@mail.com
john_newyork@mail.com
johnsmith@mail.com