List sort & find - C#
Формулировка задачи:
Доброе утро! Не знаю в ту ли ветку пишу, так что не пинайти
До вечера надо мне узнать!
1) Как реализовать Сорт листа, по признаку (С исп интерфейса IComparer)
Все уже написано, просто в осн програме было для array.sort( namemas, new MyClass.SortByName() )
SorttByname я сам и прописал в myclass
Как это выглядит для листа, оч прошу помочь!
2)Как реализовать Поиск по признаку? (В листе есть стринг имени и инт аммо)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
namespace ConsoleApplication1
{
class Monster
{
private string name;
private int ammo, health;
public Monster(int health, int ammo, string name)
{
this.health = health;
this.ammo = ammo;
this.name = name;
}
public int Ammo
{
get { return ammo; }
set
{
if (value > 0) ammo = value;
else ammo = 0;
}
}
public string Name
{ get { return name; } }
public void Passport()
{
Console.WriteLine("Monster {0} \t health = {1} ammo = {2} ", name, health, ammo);
}
public class SortByName : IComparer
{
int IComparer.Compare(object ob1, object ob2)
{
Monster m1 = (Monster)ob1;
Monster m2 = (Monster)ob2;
return String.Compare(m1.Name, m2.Name);
}
}
public class SortByAmmo : IComparer
{
int IComparer.Compare(Object ob1, Object ob2)
{
Monster m1 = (Monster)ob1;
Monster m2 = (Monster)ob2;
if (m1.Ammo > m2.Ammo) return 1;
else if (m1.Ammo < m2.Ammo) return -1;
else return 0;
}
}
}
class Program
{
static void Main(string[] args)
{
int i = 0, ammo, health;
string name;
List<Monster> stado = new List<Monster>();
for (i = 0; i < 2; ++i)
{
Console.WriteLine("Введи хэлз ");
health = int.Parse(Console.ReadLine());
Console.WriteLine("Введи Аммо ");
ammo = int.Parse(Console.ReadLine());
Console.WriteLine("Введи имя ");
name = Console.ReadLine();
stado.Add(new Monster(health, ammo, name));
}
foreach (Monster elem in stado) elem.Passport();
/*Console.WriteLine("ПО имение");
Array.Sort(stado, new Monster.SortByName());
foreach (Monster elem in stado) elem.Passport();
Console.WriteLine("По амону");
Array.Sort(stado, new Monster.SortByAmmo());
foreach (Monster elem in stado) elem.Passport();*/
}
}
} Решение задачи: «List sort & find»
textual
Листинг программы
stado.Sort(new Monster.SortByName()); //Здесь написано Monster.SortByName, а не просто SortByName //потому что класс SortByName вложен в класс Monster