Как найти минимальный элемент матрицы объектов в java?

#java #class #matrix

#java #класс #матрица

Вопрос:

У меня есть класс Matrix, который имеет следующие атрибуты: количество строк, количество столбцов и матрицу объектов.

Я должен найти минимальный элемент матрицы объектов. Как я мог это сделать, если я не знаю, какими будут мои объекты в JAVA?

Комментарии:

1. Если вы не знаете, что содержит матрица, я не понимаю, как вы могли бы сравнить ее элементы. Вы должны знать, что содержит матрица. Где ваш код? Кроме того, Java пишется как Java, а не JAVA.

2. Если объекты реализуют Comparable, это можно, иначе это невозможно сделать.

3. Не могли бы вы уточнить свой вопрос? У вас есть матрица, подобная этой: Object[][][] obj ; или это Object[][] obj ? А вы знаете размер матрицы? Я готов вам помочь, но на данный момент я понимаю ваш вопрос.

4. Вы можете переписать матрицу в качестве матрицы<? extends Comparable> и посчитать минимальный обычным способом, за исключением применения X,метод compareto(г), а не сравнение с ‘<‘.

5. У меня есть Object[][] obj матрица.

Ответ №1:

Вы можете использовать функции comparable или comparator для эффективной сортировки массивов объектов по определенному значению. В зависимости от этого вы переопределите значение сравнения со значением и выберите поле экземпляра для сравнения.

Комментарии:

1. Я понимаю это, но мне нужно сравнить два объекта. Я не знаю, что это за поля.

2. @AnaG131: этот вопрос не имеет смысла. Предположим, что первый элемент вашей матрицы — это сокет, второй — оранжевый, а третий — символ «A». Какой из них меньше или больше других?

Ответ №2:

  1. Используйте отражение, чтобы выяснить, какие объекты реализуют comparable, и все они имеют один и тот же тип или один и тот же базовый тип, и этот базовый тип реализует Comparable.
  2. если не пройти через все поля, для каждого поля, которое является строкой или числом, сравните с соответствующим… если это объект, перейдите к нему и найдите строки и числа. Можно создать универсальный компаратор. Если поле является коллекцией, тогда введите тип и обработайте аналогично. Непростая задача, но выполнимая. Вы также можете выбрать не углубляться более чем на уровень x, сохраняя текущий уровень int, который вы передаете своему стеку (если вы переходите к свойствам, которые являются объектами)

Комментарии:

1. Вы могли бы также сравнить хэш-код объектов… Вы действительно думаете, что любое такое сравнение имеет какой-либо смысл ? — Например: если объект содержит («ABC», 12) и еще один («XYZ», -1) — какой из них больше? И это относительно безобидная ситуация… Вы, конечно, шутили?

2. это естественный порядок. Может не иметь смысла во всех бизнес-случаях. Но будет много. Например, если это названия продуктов и цены, они будут выстраиваться в линию по названию продукта, описанию и т. Д

3. А если первым атрибутом является количество доступных запасов …? О, да ладно! И это матрица, и искать минимум. — Я признаю, что вы имеете в виду хорошо и пытаетесь помочь в беспомощном случае.

4. @laune Да, это будет случайным образом для объектов, но когда вы ничего не знаете, что еще вы можете сделать? Будет интересно сделать это для кучи хорошо известных объектов и посмотреть, к чему это приведет 🙂 раскройте универсальный компаратор в code google, source forge и git!