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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация, чтения файла и не только 
V
    Опции темы
Samotnik
Дата 21.11.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



добрый день!
Значит есть код (Рабочий  smile )  
Код

public class FileUserDAO implements UserDAO {
    private static Logger log = Logger.getLogger(FileUserDAO.class);
    User user;
    ArrayList<User> results = new ArrayList<User>();
    ArrayList<String> userData = new ArrayList<String>();
        public ArrayList<User> getAllUsers() {
        try {
BufferedReader in
            = new BufferedReader(new InputStreamReader(FileUserDAO.class.getClassLoader().
            getResourceAsStream("users.csv")));
            while (in.ready()) {
                String s = in.readLine();
                log.debug(s);
                StringTokenizer st = new StringTokenizer(s, ",");
                while (st.hasMoreTokens()) {
                    String token = st.nextToken();
                    userData.add(token);
                }
                log.info("rtetertertertertertetrerterts");
                results.add(new User(userData.get(0), userData.get(1), userData.get(2)));
                userData.clear();
            }
        } catch (IOException e) {
        }
        return results;
    }

    public User getUser(String userName) {
        try {
BufferedReader in
            = new BufferedReader(new InputStreamReader(FileUserDAO.class.getClassLoader().
            getResourceAsStream("users.csv")));
            while (in.ready()) {
                String s = in.readLine();
                log.debug(s);

                StringTokenizer st = new StringTokenizer(s, ",");
                while (st.hasMoreTokens()) {
                    String token = st.nextToken();
                    userData.add(token);
                }

                if (userData.get(0).equals(userName)) {
                    log.info("qqqqqqqqqq");
                    user = new User(userData.get(0), userData.get(1), userData.get(2));

                }
                userData.clear();
            }
        }
        catch (IOException ioe) {
        }
        return user;
    }
}

Нужно каким-то образом  этот кусок кода
Код

BufferedReader in
            = new BufferedReader(new InputStreamReader(FileUserDAO.class.getClassLoader().
            getResourceAsStream("users.csv")));
            while (in.ready()) {
                String s = in.readLine();
                log.debug(s);
                StringTokenizer st = new StringTokenizer(s, ",");
                while (st.hasMoreTokens()) {
                    String token = st.nextToken();
                    userData.add(token);
                }

оптимизировать, т.е. что можно придумать, что бы не писать одно и то же в различных методах ??  
PM MAIL   Вверх
ivg
Дата 21.11.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Хых,  smile Предлагаю вынести в отдельный метод
PM MAIL   Вверх
Kangaroo
Дата 21.11.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(ivg @  21.11.2007,  15:45 Найти цитируемый пост)
Хых,   Предлагаю вынести в отдельный метод 

поддерживаю  smile 

Еще вот это:
Код

StringTokenizer st = new StringTokenizer(s, ",");
while (st.hasMoreTokens()) {
   String token = st.nextToken();
   userData.add(token);
}

можна заменить на это:
Код

String[] lineArray = s.split(",");



--------------------
Lost....
PM MAIL MSN   Вверх
Samotnik
Дата 21.11.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Kangaroo @  21.11.2007,  16:50 Найти цитируемый пост)
можна заменить на это:
Код

String[] lineArray = s.split(",");


К сожалению нельзя, мне ведь это потом в коллекцию нужно будет добавлять....
PM MAIL   Вверх
Kangaroo
Дата 21.11.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(Samotnik @  21.11.2007,  15:54 Найти цитируемый пост)
К сожалению нельзя, мне ведь это потом в коллекцию нужно будет добавлять.... 

Так вроде с массивом даже удобнее.
Вместо:
Код

results.add(new User(userData.get(0), userData.get(1), userData.get(2)));

это:
Код

results.add(new User(userData[0], userData[1], userData[2]));


Добавлено через 1 минуту
И userData.clear(); не надо писать )


--------------------
Lost....
PM MAIL MSN   Вверх
Samotnik
Дата 21.11.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Kangaroo, ок,  А на счет метода?   Как бы его похитрее написать ?
PM MAIL   Вверх
Kangaroo
Дата 21.11.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Samotnik
если очень хочется, можно вообще все в одном методе делать. Ему передавать маску - "*" вернуть список всех пользователей, "имя" вернуть списко с одним юзером <имя>. Но, я думаю, это лишнее. Тебе решать ;)


--------------------
Lost....
PM MAIL MSN   Вверх
Samotnik
Дата 21.11.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Kangaroo,  оки!!   Пасибо за саоветы 
PM MAIL   Вверх
DKroshkin
Дата 23.11.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А еще можно зачитать весь файлик в кэш, и уже юзать данные из кэша, а не перезачитывать каждый раз.
PM MAIL   Вверх
_Michael
Дата 23.11.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Kangaroo @  21.11.2007,  16:58 Найти цитируемый пост)

Код

results.add(new User(userData[0], userData[1], userData[2]));


Зачем так, раз можно проще:
Код

String[] array = {"string1","string2","string3","string4"};
        Collection<String> userData= new ArrayList<String>();
        List<String> list = Arrays.asList(array);
        userData.addAll(list);

smile


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Kangaroo
Дата 23.11.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(_Michael @  23.11.2007,  15:12 Найти цитируемый пост)
Зачем так, раз можно проще: 

хм.. что можна проще? 
вы показали как из массива получить список,  а у меня из массива создается объект Юзер и добавляется в список юзеров..
не вижу связи  smile 


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

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

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


 




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


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

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