2013-09-24 3 views
0

Я работаю над проблемой, которая нуждается во мне, чтобы распределить ресурсы по сетке, как это:Как структурировать сетку со строковыми ссылками на объекты

|A|B|C 
|X|C|X 
|A|X|X 

Я разработка лучшего решения моей проблемы с помощью комбинированных алгоритмов поиска. Из-за алгоритмов легче обрабатывать значения String в сетке. Однако, когда начальная сетка решена, мне нужно получить доступ к некоторым свойствам. Скажите, что A для яблок, тогда мне может потребоваться доступ к размеру Apple.

Итак, я сделал уроки класса, и я добавляю фрукты, которые мне нужны при инициализации. Так как фрукты нужно добавлять во время выполнения, но это не может быть перечисление, то я попытался в первую очередь.

Поскольку решение иногда занимает целых 10000+ попыток, я решил проверить строки друг против друга быстрее, чем сделать все эти строки в объекты, не так ли?

Теперь я не могу понять, как это сделать. В основном я хочу иметь возможность определять свои плоды в одном месте и просто говорить в сетке: «Это яблоко».

EDIT: Возможно, это действительно более важный вопрос ООП. Как я могу дать пользователям возможность определять новые типы объектов, например, новые виды фруктов, изнутри программы?

+0

Каковы ограничения на распространение? Непонятно, что вы пытаетесь сделать. – Joni

ответ

1

Строка также является объектом, она использует поля и методы точно так же, как и ваш пользовательский объект. Тогда почему бы не написать свой пользовательский объект?

Если типы фруктов «зарегистрировано» во время выполнения, а затем положить int id, представляя собой своего рода фрукты, в ваш объект Фрукты, рядом свойств, как double size, а также использовать некоторые отдельные глобальной Map<int, String>, вне Fruit конечно, который сопоставляет имена или любое другое описание для каждого идентификатора. Вы можете даже перенести эту карту в какой-то класс «списка фруктов», который присваивает последующие целые числа каждому новому id с int newFruitType(String description), записывает соответствующую запись на обсуждаемую карту и возвращает вновь созданный id.

Чтобы избежать дубликатов, вы можете использовать «индекс» Map<String, int>, который сохранит все идентификаторы и описания, помещенные внутри Map<int, String>, но на этот раз ключ будет описанием. Тогда класс регистра просто проверит индекс для уникальности каждого нового типа плодов, прежде чем поместить этот тип на карту. Если типы фруктов добавляются через пользовательский интерфейс, то, чтобы помочь пользователю, вы также можете отобразить отсортированное содержимое индекса в соответствующей форме добавления. Чтобы содержимое содержимого индекса сортировалось, вы можете сохранить его в некотором SortedMap<String, int>.

+0

Я действительно думал использовать какую-то карту для этого. Но как это будет работать, если у кого-то есть страница в пользовательском интерфейсе, в которой они могут определять новые типы фруктов? – Difusio

Смежные вопросы