Я хочу иметь коллекцию объектов, которые будут из класса, который я создал, под названием Сервер. Сервер имеет строковое свойство, которым является его IP-адрес, а также множество других элементов данных и объектов.
У меня будут методы для добавления и удаления серверов в эту коллекцию, и время от времени будет необходимо находить сервер по его IP-адресу. Если бы я делал это в C #, я бы использовал Dictionary <, где IP-строка была бы ключом, а объект Server был бы значением. Я мог легко проверить, существует ли элемент в Словаре, прежде чем пытаться добавить его. </p>
Итак, мои требования:
1. Возможность добавлять предметы в коллекцию (мне все равно, куда они идут: спереди, сзади, посередине)
2. Возможность удалять предметы из любой точки коллекции.
3. Возможность определить, существует ли конкретный IP-адрес в коллекции.
4. Возможность получить ссылку на объект Сервера по его IP.
Редактировать: О да, я хотел бы, чтобы он был строго напечатан, как Вектор ... Я думаю, это не совсем необходимо, но было бы неплохо.
Похоже, ассоциативные массивы дадут мне то, что мне нужно, за исключением того, что я не уверен, как это сделать # 3 или # 4.
public var Servers:Object = new Object( );
public function AddServer(server:Server):void
{
//TODO:need to check if it exists first and throw an error if so
//(it's the caller's responsibility to call DoesServerExist first)
Servers[server.IP] = server;
}
public function RemoveServer(IP:string):void
{
//is it OK to attempt to delete an item if it doesn't already exist?
//do I need to check if it exists before doing delete?
delete Servers[IP];
}
public function DoesServerExist(IP:string):bool
{
//Do I loop through all the elements testing it's IP property?
//Or can I just do something like this?
if(Servers[IP] == null)
{
return false;
}
else
{
return true;
}
}
public function GetServer(IP:string):Server
{
return Servers[IP];//what is returned if this IP doesn't exist?
}