C# 集合及集合内排序 问题 速求
声明一个集合例如:list<T>list=newList<>(不知道对不对哦)怎么向集合内添加数据?list.add??(具体代码忘记了)然后用什么方法可以对集合list...
声明一个集合例如:list<T> list=new List<>(不知道对不对哦)
怎么向集合内添加数据?list.add??(具体代码忘记了)
然后用什么方法可以对集合list 内的数据进行从小到大的排序?
怎样获得最小的那个数据(~~~~(>_<)~~~~ 好笨啊……) 展开
怎么向集合内添加数据?list.add??(具体代码忘记了)
然后用什么方法可以对集合list 内的数据进行从小到大的排序?
怎样获得最小的那个数据(~~~~(>_<)~~~~ 好笨啊……) 展开
展开全部
C#中常用到的集合都有一个默认的sort方法,这个方法可以进行默认排序。
但是如果这些集合中的元素是自定义的类,那么这个默认的sort可能就不准确了。
文章中使用到的命名空间是system,接口是 IComparable 和 IComparer。
sort的默认无参数的比较方式,我个人认为是IComparable中的CompareTo函数。
抄写书上的两个例子来辅助记忆:
[csharp] view plaincopy
class Person : IComparable
{
public int Age { get; set; }
public string Name { get; set; }
public int CompareTo(object obj)
{
if (!obj.GetType().Equals(this.GetType()))
throw new Exception("");
else
{
Person person = obj as Person;
return this.Age - person.Age;
}
}
}
[csharp] view plaincopy
class PersonComparerName : IComparer
{
public static IComparer Default = new PersonComparerName();
public int Compare(object x, object y)
{
if (x is Person && y is Person)
return Comparer.Default.Compare((x as Person).Name, (y as Person).Name);
else
throw new Exception("");
}
}
如果在集合中添加的全是Person对象,这个集合名称为list,那么sort方法:
list.sort(),这个方法将使用Person中的CompareTo方法,通过年龄来对比
list.sort(PersonComparerName.Default),这个方法将使用Person中的Compare方法,通过名字来对比。
另外List<Type>,这个东西居然可以用来继承。。。。以前都不知道的,不过感觉意义不大。
sort方法还可以使用第三种方式来排序,但是第三种方式的排序需要另外写一个函数方法。
[csharp] view plaincopy
public int compareSort(Point x, Point y)
{
if (x.X > y.X)
return 1;
else if (x.X < y.X)
return -1;
return 0;
}
[csharp] view plaincopy
Comparison<Point> sorterX = new Comparison<Point>(compareSort);
list.Sort(sorterX);
这样就可以调用了。
但是如果这些集合中的元素是自定义的类,那么这个默认的sort可能就不准确了。
文章中使用到的命名空间是system,接口是 IComparable 和 IComparer。
sort的默认无参数的比较方式,我个人认为是IComparable中的CompareTo函数。
抄写书上的两个例子来辅助记忆:
[csharp] view plaincopy
class Person : IComparable
{
public int Age { get; set; }
public string Name { get; set; }
public int CompareTo(object obj)
{
if (!obj.GetType().Equals(this.GetType()))
throw new Exception("");
else
{
Person person = obj as Person;
return this.Age - person.Age;
}
}
}
[csharp] view plaincopy
class PersonComparerName : IComparer
{
public static IComparer Default = new PersonComparerName();
public int Compare(object x, object y)
{
if (x is Person && y is Person)
return Comparer.Default.Compare((x as Person).Name, (y as Person).Name);
else
throw new Exception("");
}
}
如果在集合中添加的全是Person对象,这个集合名称为list,那么sort方法:
list.sort(),这个方法将使用Person中的CompareTo方法,通过年龄来对比
list.sort(PersonComparerName.Default),这个方法将使用Person中的Compare方法,通过名字来对比。
另外List<Type>,这个东西居然可以用来继承。。。。以前都不知道的,不过感觉意义不大。
sort方法还可以使用第三种方式来排序,但是第三种方式的排序需要另外写一个函数方法。
[csharp] view plaincopy
public int compareSort(Point x, Point y)
{
if (x.X > y.X)
return 1;
else if (x.X < y.X)
return -1;
return 0;
}
[csharp] view plaincopy
Comparison<Point> sorterX = new Comparison<Point>(compareSort);
list.Sort(sorterX);
这样就可以调用了。
展开全部
1. 先看什么类型的数据,是float 还是double,int
2.定义,比如 List <int> list = new List<int>
3.1 list.Sort().它有一个默认排序。查看文档说明
3.2 如果想自己排序 list.Sort(IComparision), 先定义一个继承比较接口的类,作为参数就可以了
2.定义,比如 List <int> list = new List<int>
3.1 list.Sort().它有一个默认排序。查看文档说明
3.2 如果想自己排序 list.Sort(IComparision), 先定义一个继承比较接口的类,作为参数就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
list<int> list1 = new list<int>();
for (int i = 0; i < 10; i++) //输入10~1
{
list1.Add(10 - i);
}
list1.Sort(); //排序
int min = list1.Min(); //输出最小值
for (int i = 0; i < list1.Count; i++) //显示
{
Console.Write("{0} ",list1[i]);
}
Console.WriteLine("\n最小值是:{0}",min);
多上微软的MSDN上看看,在网上也能搜到一大堆~
for (int i = 0; i < 10; i++) //输入10~1
{
list1.Add(10 - i);
}
list1.Sort(); //排序
int min = list1.Min(); //输出最小值
for (int i = 0; i < list1.Count; i++) //显示
{
Console.Write("{0} ",list1[i]);
}
Console.WriteLine("\n最小值是:{0}",min);
多上微软的MSDN上看看,在网上也能搜到一大堆~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
List有sort方法的
要自己给类型T定义一个比较的规则
然后调sort方法就好了
要自己给类型T定义一个比较的规则
然后调sort方法就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询