程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# List() 實現 IComparer 接口 排序

C# List() 實現 IComparer 接口 排序

編輯:C#入門知識

C# List() 實現 IComparer 接口 排序


C# 的 List<> 容器提供了 IComparer 接口 來讓使用者可以靈活的對 容器進行排序。

下面通過對一個背包 List<> 進行以下規則排序:

1、首先按道具類型排序

2、類型相同然後按道具品級排序

3、品級相同然後按等級排序

 

using System;
using System.Collections.Generic;
using System.Text;

namespace bagtest
{

    public class ItemInfo
    {

        public int mItemType; //1道具  2禮包;
        public int mItemLevel;//等級;
        public int mitemRank;//品級;

        public ItemInfo(int itemtype, int itemlevel, int itemrank)
        {
            mItemType = itemtype;
            mItemLevel = itemlevel;
            mitemRank = itemrank;
        }

        public bool isSame(ItemInfo iteminfo)
        {
            if ((mItemType == iteminfo.mItemType) && (mitemRank == iteminfo.mitemRank) && (mItemLevel == iteminfo.mItemLevel))
            {
                return true;
            }
            return false;
        }
    }

    public class ItemInfoCompare : IComparer
    {
        public int Compare(ItemInfo infoA, ItemInfo infoB)
        {
            if (infoA.isSame(infoB))
            {
                return 0;
            }

            //首先比較類型;
            if (infoA.mItemType > infoB.mItemType)
            {
                return 1;
            }
            else if (infoA.mItemType < infoB.mItemType)
            {
                return -1;
            }

            //類型相同,比較品級;
            if (infoA.mitemRank > infoB.mitemRank)
            {
                return 1;
            }
            else if (infoA.mitemRank < infoB.mitemRank)
            {
                return -1;
            }

            //品級相同,比較等級;
            if (infoA.mItemLevel > infoB.mItemLevel)
            {
                return 1;
            }
            else if (infoA.mItemLevel < infoB.mItemLevel)
            {
                return -1;
            }

            return 0;
        }
    }



    class Program
    {
        static void Main(string[] args)
        {

            List itemInfoList = new List();

            itemInfoList.Add(new ItemInfo(1, 2, 2));//道具 2級 品級3

            itemInfoList.Add(new ItemInfo(2, 3, 2));//禮包 2級 品級1

            itemInfoList.Add(new ItemInfo(1, 3, 2));//道具 2級 品級2

            itemInfoList.Add(new ItemInfo(1, 2, 1));//道具 2級 品級1

            itemInfoList.Add(new ItemInfo(1, 2, 3));//道具 2級 品級3

            itemInfoList.Add(new ItemInfo(2, 2, 1));//禮包 2級 品級1

            itemInfoList.Add(new ItemInfo(1, 1, 1));//道具 1級 品級1

            itemInfoList.Add(new ItemInfo(2, 1, 3));//禮包 1級 品級3

            //輸出a中全部元素
            Console.WriteLine(排序前);
            foreach (var v in itemInfoList)
            {
                Console.WriteLine(v.mItemType= + v.mItemType +   v.mitemRank= + v.mitemRank +   v.mItemLevel= + v.mItemLevel);
            }

            SortItem(itemInfoList);

            //輸出a中全部元素
            Console.WriteLine(排序後);
            foreach (var v in itemInfoList)
            {
                Console.WriteLine(v.mItemType= + v.mItemType +   v.mitemRank= + v.mitemRank +   v.mItemLevel= + v.mItemLevel);
            }


            Console.ReadLine();
        }

        static void SortItem(List itemInfoList)
        {
            itemInfoList.Sort(new ItemInfoCompare());
        }
        }
}
 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved