Дженерики Java: Collections.max () подпись и Компаратор

Я понимаю получение и помещаю принцип для наборов: если метод берет в наборе, в который он запишет тип T, параметр должен быть Collection, тогда как, если это считает тип T из, параметр должен быть Collection.

Но мог кто-то объяснять Collections.max() подпись:

public static  T max(Collection coll,
                    Comparator comp)

В особенности, почему это Comparator вместо Comparator ?

25
задан Jason S 11 February 2010 в 22:49
поделиться

3 ответа

Здесь может пригодиться мнемоника PECS Джоша Блоха. Это означает:

Producer extends , Consumer super

Это означает, что когда параметризованный тип, передаваемый методу, создает экземпляров T (они будут извлечены из него каким-то образом), ? extends T следует использовать, поскольку любой экземпляр подкласса T также является T .

Когда параметризованный тип, передаваемый методу, потребляет экземпляров T (они будут переданы ему, чтобы что-то сделать), ? super T следует использовать, потому что экземпляр T может быть законно передан любому методу, который принимает некоторый супертип T . Например, Comparator может использоваться в Collection . ? extends T не будет работать, потому что Comparator не может работать с Collection .

Изменить: Чтобы уточнить немного больше о получении / размещении (производстве / потреблении):

public T something();
       ^

Выше приведен метод, который производит T .

public void something(T t);
                      ^

Вышеупомянутый метод потребляет T .

«Производитель расширяет , Потребитель super ]» применяется к тому, как метод, которому передается параметризованный объект, будет использовать этот объект. В случае Collections.max () элементы будут извлечены из Collection , так что это производитель.Эти элементы будут переданы в качестве аргументов методу на Comparator , так что он будет потребителем.

65
ответ дан 28 November 2019 в 18:15
поделиться

No.

Добавьте в таблицу (таблицы) столбец, модифицированный с помощью lastmodified, и обновите его при изменении этой строки.

-121--4144469-

Как это работает?

Когда вы заходите на веб-сайт Firefox с информацией о местоположении, браузер спросит вас, хотите ли вы поделиться своим местоположением.

Если вы согласны, Firefox собирает информацию о ближайших точках беспроводного доступа и IP-адресе вашего компьютера и получит оценку вашего местоположения, отправив эту информацию в Google Location Services (служба геолокации по умолчанию в Firefox). Эта оценка местоположения затем передается запрашивающему веб-сайту. ( Источник )

Насколько точны местоположения?

Точность сильно варьируется в зависимости от местоположения. В некоторых местах поставщики геолокационных услуг могут предоставить местоположение в пределах нескольких метров. Однако в других областях это может быть гораздо больше. Все места расположения должны рассматриваться в качестве оценочных, поскольку нет никаких гарантий точности предоставленных мест. ( Источник )

В моем случае Firefox сообщает, что я на расстоянии около 10 км от моего реального местоположения.

Как использовать эту функцию на моем веб-сайте?

Вы бы сделали что-то подобное:

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) {  

        alert(position.coords.latitude + ", " + position.coords.longitude);

        // Use the latitude and location as you wish. You may set a marker
        // on Google Maps, for example.
    }); 
} 
else {
    alert("Geolocation services are not supported by your browser.");
}  

Вы можете увидеть онлайн-демонстрацию здесь: Firefox HTML 5 Geolocation Demo (Требуется браузер с поддержкой геолокации, такой как Firefox 3.1b3)

-121--1386062-

Компаратор потребляет пару Ts и производит int. Коллекция производит Ts, которые потребляет компаратор.

Супер потребляет, расширяет производство.

В отношении принципа get and put, get products and put потребляет.

1
ответ дан 28 November 2019 в 18:15
поделиться

Компаратор должен иметь возможность принимать T в качестве аргумента.

0
ответ дан 28 November 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: