当前位置:   article > 正文

Unity的List排序_unity list 排序

unity list 排序

       Unity的List.Sort有三种结果 1,-1,0分别是大,小,相等。默认List的排序是升序排序,如果要降序排序,也很简单,只需要在前面加一个负号即可。

  1. List<int> m_temp = new List<int>(){6,1,3,5,4};
  2. // 升序
  3. m_temp.Sort((x, y) => x.CompareTo(y));
  4. // 降序
  5. m_temp.Sort((x, y) => -x.CompareTo(y));
  6. Console.WriteLine(m_temp);
  7. // 6,5,4,3,1

       对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。而数值型也可以自己比较。排序时左右两个变量必须是左-比较-右,切记不可反过来比较。sort方法官方推荐的 命名方式是x(左),y(右) 。对于复杂的比较 可以分出来,单独写成函数。多权重比较,假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*2即可。

  1. List<Tuple<int, int>> m_temp = new List<Tuple<int, int>>()
  2. {
  3. new Tuple<int,int>(2,1),
  4. new Tuple<int,int>(43,1),
  5. new Tuple<int,int>(12,1),
  6. new Tuple<int,int>(33,5),
  7. new Tuple<int,int>(1,4),
  8. };
  9. m_temp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * 2));
  10. Console.WriteLine(m_temp);
  11. //33,5
  12. //1,4
  13. //43,1
  14. //12,1
  15. //2,1

// List按照指定字段进行排序

  1. using System;
  2. using UnityEngine;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine.UI;
  6. public class Test : MonoBehaviour
  7. {
  8. public class MyInfo
  9. {
  10. public MyInfo(string name, int level, int age)
  11. {
  12. this.name = name;
  13. this.level = level;
  14. this.age = age;
  15. }
  16. public string name;
  17. public int level;
  18. public int age;
  19. }
  20. public List<MyInfo> myList = new List<MyInfo>();
  21. void Awake()
  22. {
  23. myList.Add(new MyInfo("A", 2, 9));
  24. myList.Add(new MyInfo("C", 8, 6));
  25. myList.Add(new MyInfo("B", 6, 7));
  26. }
  27. void Update()
  28. {
  29. if (Input.GetKeyDown(KeyCode.Space))
  30. {
  31. // lambda表达式,等级排序
  32. // 升序
  33. myList.Sort((x, y) => { return x.level.CompareTo(y.level); });
  34. // 降序
  35. myList.Sort((x, y) => { return -x.level.CompareTo(y.level); });
  36. }
  37. }
  38. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/77401
推荐阅读
相关标签
  

闽ICP备14008679号