Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как избежать двойников в списке? Добавление в List<String> 
V
    Опции темы
Pawl
Дата 22.3.2012, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(Mirkes @  22.3.2012,  18:05 Найти цитируемый пост)
Господину Kardual действительно следует сделать замечание.

Поддерживаю! Однозначный хам.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Karadul
Дата 22.3.2012, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 0
Всего: 1



Как аукнется, знаете ли.

Попка пригорела, лодыри? smile

Это сообщение отредактировал(а) Karadul - 22.3.2012, 23:03
PM MAIL   Вверх
LSD
Дата 23.3.2012, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538




M
LSD
Karadul, замечание насчет сложности справедливое, но хамишь ты напрасно.
Цитата(Karadul @  22.3.2012,  23:23 Найти цитируемый пост)
Попка пригорела, лодыри?

Предлагаю тебе в пятидневный срок реализовать алгоритм со сложностью хотя бы O(log(n)), соблюдая исходное условие про List<String>. Сможешь - молодец и замечания по делу. Не сможешь/не станешь - твои замечания троллинг и поступать с тобой надо как с троллем.



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Karadul
Дата 23.3.2012, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 0
Всего: 1



Цитата(LSD @  23.3.2012,  14:18 Найти цитируемый пост)
замечание насчет сложности справедливое, но хамишь ты напрасно.

Где тут хамство? Быстро, решительно!

Конвертировать List в какой-нить Set. Если не позволяют условия - поменять их. Или вы всерьез будете отвечать на вопрос "Как отверткой чистить зубы? Отверткой потому что по условиям задачи так надо".
PM MAIL   Вверх
LSD
Дата 23.3.2012, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Меньше слов, больше кода smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Pawl
Дата 23.3.2012, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(Karadul @  22.3.2012,  19:27 Найти цитируемый пост)
Это только жавоиды или вообще все русские школолопрограммисты

Казахские программисты - самые суровые программисты в мире! Казахские программисты настолько суровы, что вообще не пользуются компьютером... smile

Добавлено через 1 минуту и 17 секунд
Пы Сы Как аукнется, знаете ли.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Karadul
Дата 23.3.2012, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 0
Всего: 1



Код

import java.util.*;
public class Main {
    private static int j;
    
    private static String validateName(Set<String> nameList, String name, int i) {
        if(nameList.get(name) != null) {
            name += ++j;                 
        }
        
        i++;
        return (i < nameList.size()) ? validateName(nameList, name, i) : name;
    }

    public static void main(String[] args) {
        Set<String> templateName = new HashSet<String>();
        templateName.add("test4");
        templateName.add("test5");
        templateName.add("test12");
        templateName.add("test2");
        templateName.add("test");        
        String str = validateName(templateName, "test", 0);
        System.out.println("newName : " + str);
    }
}

Еще что-нибудь?
PM MAIL   Вверх
knopka
Дата 23.3.2012, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 17.1.2006
Где: Россия: Петербург

Репутация: 1
Всего: 1



to Karadul

пример не рабочий
Цитата

Код

if(nameList.get(name) != null) {



cannot find symbol method get(java.lang.String)

условие не выполнено
Цитата

соблюдая исходное условие про List<String>


PM MAIL ICQ   Вверх
Karadul
Дата 23.3.2012, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 0
Всего: 1



Цитата(knopka @  23.3.2012,  21:33 Найти цитируемый пост)
пример не рабочий

У меня эклипс не запускается. Вы ж спецы, поправить сможете, да? Или тут бесплатное программирование на заказ? smile


Цитата(knopka @  23.3.2012,  21:33 Найти цитируемый пост)
соблюдая исходное условие про List<String>

Сконвертируй в Set. Скажи поставившему условие, что он не прав. См. выше про отвертку.
PM MAIL   Вверх
dorogoyIV
Дата 24.3.2012, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



подведем итоги:
Цитата

Как избежать двойников в списке? (соблюдая исходное условие про List<String>)

есть метод contains... (его предлагали)
если вы считаете, что, вы напишете лучше (оптимальнее), то флаг вам в руки!

Цитата(Karadul @  23.3.2012,  21:58 Найти цитируемый пост)
Скажи поставившему условие, что он не прав.

наверное это не возможно  smile 
видимо ТС надо немного переделать рабочую программу

ну говорили же - "работает - не лезь!!!"  smile 
PM MAIL   Вверх
Pawl
Дата 24.3.2012, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(Karadul @  23.3.2012,  21:58 Найти цитируемый пост)
У меня эклипс не запускается. Вы ж спецы, поправить сможете, да? Или тут бесплатное программирование на заказ?

Вас никто не просил работать бесплатно, Вас просили ответить за слова, с чем Вы, собственно, не справились.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Karadul
Дата 24.3.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 0
Всего: 1



Pawl, такую вещь, как заменить метод на нужный, ты и сам можешь сделать, или за тебя пеленки менять нужно?

Код

import java.util.*;
public class Main {
    private static int j;
    
    private static String validateName(Set<String> nameList, String name, int i) {
        if(nameList.contains(name)) {
            name += ++j;                 
        }
        
        i++;
        return (i < nameList.size()) ? validateName(nameList, name, i) : name;
    }
    public static void main(String[] args) {
        Set<String> templateName = new HashSet<String>();
        templateName.add("test4");
        templateName.add("test5");
        templateName.add("test12");
        templateName.add("test2");
        templateName.add("test");        
        String str = validateName(templateName, "test", 0);
        System.out.println("newName : " + str);
    }
}


Цитата(dorogoyIV @  24.3.2012,  03:08 Найти цитируемый пост)
есть метод contains... (его предлагали)

... который работает через for c O(n). Более того, Set содержит тот же метод.

Цитата(dorogoyIV @  24.3.2012,  03:08 Найти цитируемый пост)
видимо ТС надо немного переделать рабочую программу

А переделать тип переменной из ArrayList в подходящий Set - это на грани выполнимого? Все остальное останется тем же.
PM MAIL   Вверх
Mirkes
Дата 26.3.2012, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Для особо одаренных поясню, что класс сложности определяется в контексте ВСЕГО ПРОЕКТА, а не в контексте конкретного фрагмента. Если в большинстве мест НУЖЕН List, то и в данном конкретном месте ПРИДЕТСЯ использовать List.
А общий треп по поводу О(1) и О(n) к делу не относится.
Автору предлагали использовать Hash, но он указал, что в других частях проекта используется List и выбора у него НЕТ.
Я дискуссию прекращаю.


--------------------
Mirkes
PM MAIL   Вверх
LSD
Дата 26.3.2012, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Karadul @  24.3.2012,  13:36 Найти цитируемый пост)
А переделать тип переменной из ArrayList в подходящий Set - это на грани выполнимого?

А прочесть условие это на грани выполнимого?
Цитата(knopka @  15.3.2012,  23:38 Найти цитируемый пост)
List<String> - принципиально, он используется ещё кучей разных методов,




--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Karadul
Дата 26.3.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 0
Всего: 1



Цитата(LSD @  26.3.2012,  09:55 Найти цитируемый пост)
А прочесть условие это на грани выполнимого?

Цитата(Karadul @  23.3.2012,  14:44 Найти цитируемый пост)
Или вы всерьез будете отвечать на вопрос "Как отверткой чистить зубы? Отверткой потому что по условиям задачи так надо". 


Можно скопировать локально List в Set, если надо за раз проверить больше 1 имени. Можно заменить List на Set, который сохраняет порядок, и в остальных местах ты эту разницу просто не заметишь.
Если список с именами вряд ли будет большим и поиск в нем будет редко использоваться, то можно и так оставить. Но лучше так не делать.

Цитата(Mirkes @  26.3.2012,  04:05 Найти цитируемый пост)
А общий треп по поводу О(1) и О(n) к делу не относится.

Действительно, такие мелочи. Кроме меня, на них никто и внимания не обратил.
Надеюсь, мне с таким кодом дела иметь не придется.

Вот еще пример.
http://habrahabr.ru/post/137615/
Цитата

Коллега Редстоуна пояснил, что снижение производительности объясняются большим количеством структур O(n) в Git, что на больших размерах вызывает проблемы. 


Это сообщение отредактировал(а) Karadul - 26.3.2012, 13:17
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.