imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.08.2003, 20:41     # 1
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
Нужна помощь.Ява.

Здрастуйте.
Вот есть файл,текстовый,там много слов,в столбик,мне надо написать программку ,которая читает строки из этого файла и записывает в другой,но в первом файле есть повторения,а мне они не нужны,как это реализовать????я вроде написал программку,но она не правильно работает,пишет такой же файл как и первый.Вот код
import java.io.*;

class Slovar {
public static void main(String args[]) throws Exception {
FileWriter fw = new FileWriter("slovarik-final.txt");
FileReader fr = new FileReader("C:/JBuilder8/samples/Welcome/slovar.txt");
BufferedReader br = new BufferedReader(fr);
FileReader fr2 = new FileReader("C:/JBuilder8/samples/Welcome/slovarik-final.txt");
BufferedReader br2 = new BufferedReader(fr2);
String str = br.readLine();
String str2;
int i=0;
while((str=br.readLine())!=null) {
do {
str2=br2.readLine();
if(str.equals(str2)) {
i=1;
}
}
while((br2.readLine())!=null);

if(i==0);
fw.write(str+'\n');
}
fw.close();
}
}
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 25.08.2003, 21:05     # 2
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
Несколько мыслей:
1) Сортируешь первый файл и при сохранении во второй сравниваешь соседние слова и не сохраняешь одинаковые (долго). (Возможно есть сортировки, предусматривающе исключение повторов)
2) Создаешь числовой массив. Берешь первое слово, нумеруешь его как 1, сравниваешь с другими, одинаковые - тоже 1, второе - с третьим и далее. Потом пробегаешь по массиву и выбираешь строки с последовательными номерами. (нужен массив, но побыстрее)
---
Пока больше ничего на ум не пришло.
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 25.08.2003, 21:29     # 3
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
Сортировка невозможна,4 миллиона слов сортировать памяти не хватит,я пробовал.Насчет массива надо попробовать.
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 25.08.2003, 21:37     # 4
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
4 миллиона DWORDов ~ 15 Mb.

3) Берешь первое слово, пробегаешь с ним по всему списку, удаляя дубли. Далее второе и т.д.
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 25.08.2003, 23:10     # 5
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
не 4 миллиона это 50 мегов,а вот как удалять дубли???я не знаю этого метода(функции)
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 26.08.2003, 09:56     # 6
aleh
Junior Member
 
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129

aleh Путь к славе только начался
Цитата:
Первоначальное сообщение от Oracul
не 4 миллиона это 50 мегов,а вот как удалять дубли???я не знаю этого метода(функции)
4 миллиона означает только одно -- слишком много повторений! Т.е. одно и тоже слово повторяется несколько раз (2-10, а то и 100 )

java.util.* -- Есть богатый набор классов для работы с коллекциями. Среди них есть классы поддерживающие хэш и деревья. Кроме того имеются даже классы с сохранением порядка добавления элементов.

Хэш и дерево (есть ещё множество -- Set) не допускают наличия двух одинаковых элементов -- как раз что тебе нужно! Просто при чтении файла добавляешь всё в коллекцию, а потом пробегаешь её итератором и скидываешь всё в выходной файл.

В зависимости от выбранного класса будет различатся скорость добавления элемента и сканирования коллекции. Дерево выглядит наиболее подходящим + получишь отсортированный словарь.
aleh вне форума  
Старый 26.08.2003, 15:50     # 7
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
aleh
Спасибо за помощь,вот только одно,у меня JBuilder выдает ошибку java.lang.outofmemory .что делать???Рам у меня 256 мегов.Виндовс 98 СЕ.
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 26.08.2003, 18:23     # 8
aleh
Junior Member
 
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129

aleh Путь к славе только начался
Oracul
1) Увеличь swap (не более 200-300 Мб)
2) Выкинь из памяти всякую муть.
3) Зарежь память самому JBuilder-у (это сложный вопрос, нужно в его личном JSDK добавить параметр -Xm128, кажется)
4) Запускай программу при выгруженном JBuilder (но это только для большх проектов. Хотя запуск твоей проги приведёт к лишним 16-32 Мб -- отдельный экземпляр java + куча вспомогательных классов и твоя программа)
5) Смени JBuilder на что попроще.

P.S.
Трудно поставить диагноз заочно...
aleh вне форума  
Старый 27.08.2003, 12:29     # 9
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
aleh
IntelliJ IDEA пойдет??
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 27.08.2003, 13:36     # 10
aleh
Junior Member
 
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129

aleh Путь к славе только начался
Oracul
Более чем. Это достаточно лёгкий пакет, а главное очень красивый и в нём есть куча полезных опций -- встроенный versioning, refactoring и проверка на явные ошибки.

Я мучал Intellij IDEA 3.0.4 --
aleh вне форума  
Старый 29.08.2003, 12:31     # 11
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
Большое спасибо за помощь.aleh а в 98 виндовсе на каждую прогу случайно не выделяеться определенное кол-во памяти и времени процессора?
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 29.08.2003, 17:31     # 12
aleh
Junior Member
 
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129

aleh Путь к славе только начался
Oracul
Да незачто.
В 98-х время делится между процессами примерно в равной мере (если они не хотят делиться). А память выделяется сколько надо пока она есть. Под памятью понимается вся RAM (кроме ядра) и виртуальная (swap). Отличие от NT в том, что в 98 память задачи не защищена от других задач (если что-то начинает выпендриваться, то с лёгкостью завалит всю машину).

Java при запуске любит создавать отдельный экземпляр для каждой своей программы. При этом загружаются базовые и вспомогательные классы (где-то 8-32 Мб в зависимости от использования пакетов и java-программы). Поэтому три параллельно запущенных java-приложения обычно запускаются в своей java-песочнице (контейнере).
Таким образом съедается драгоценная память (это вам не Perl). Можно запускать всё в одном экземпляре JRE, но тогда снижается надёжность (что-то типа аналога различия NT и 98).
В случае средств разработки IDE (JBuilder) и приложение мало того что запускаются в различных JRE, так эти JRE могут иметь разные версии (и даже располагаться на различных компьютерах).
Такие пакеты как Oracle 9 для надёжности запускают экземпляр JRE (когда нужно) на каждого пользователя -- память при этом кончается очень быстро.

P.S.
Для нормальной разработки приложений нужно *** Мб RAM:
простое -- 256 Мб
J2EE без бызы данных (IDE + разрабатываемая программа) -- 512 Мб
J2EE (AppServer) + DB (Oracle 9) + IDE (всё запускается на одном PC) -- 768/1024 Мб

Вот откуда взялось выражение "Жava давит" . Цифры вполне реальные. Как-то пробовал написать простой пример для J2EE SDK на 128 Мб -- ждал по 5-10 минут только чтобы прошёл Deploy (После этого купил себе домой PC c 512 RAM на борту).

"Java очень любит RAM. Отчего и почему сам я толком не пойму."
aleh вне форума  
Старый 31.08.2003, 13:12     # 13
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
Я еще новичок,и только только изучил Яву,и поэтому немного знаю.Не мог бы ты обьяснить,чем отличаеться ЕЕ от SE ,всмысле,что есть в ЕЕ чего нету в SE и что такое база данных,что в ней содержиться,и зачем нужно с ней работать?на примере Oracle 9
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 01.09.2003, 10:27     # 14
aleh
Junior Member
 
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129

aleh Путь к славе только начался
Oracul
Эх... В мире Java существует 3-ри направления ME, SE и EE -- соответственно Micro, Standard и Enterprise Edition.
Стандартная редакия скорее является маин-стреам. Микро редакция это для маленьких устройств (мобильник, стиральная машина...) а EE вариант просто сверх навороченная добавка поверх SE (в последнее время становиться всё толще и толще).

Обычно SE связывают с клиентскими приложениями (Swing, Applet...) а EE с такими *страшными* словами как Application Server, JSP, EJB (BMP, CMP)...
http://ru.sun.com/win/java/

База данных. Есть данные, их нужно где-то хранить. Мало того что их надо где-то хранить, так с ними нужно ещё и работать -- выборка, поиск, обновление... Вот для этого и существуют базы дынных (DataBase - DB, RDBMS).

Кстати, если нужна DB, то не обезательно сразу начинать с Oracle -- это база данных для профессионального использования (хотя скорее уровня предприятия). Не так давно произошло слияние SAP DB и MySQL -- версии к 5-ой MySQL превратится во вполне серёзную базу данных (но будет куда легче Oracle). Ещё существует PointBase (www.pointbase.com) -- DB 100% на Java. В самом скромном случае можно использовать тот-же Access или даже Excel (через JDBC-ODBC порт).

P.S.
SE + Tomcat (JSP) = лёгкий вариант для EE приложений. Совсем НЕ обязательно использовать самые последние и модные слова. ПО должно отвечать своему назначению а не веяниям моды и амбициям разработчика/менеджера.
aleh вне форума  
Старый 01.09.2003, 13:12     # 15
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
Цитата:
База данных. Есть данные, их нужно где-то хранить. Мало того что их надо где-то хранить, так с ними нужно ещё и работать -- выборка, поиск, обновление... Вот для этого и существуют базы дынных (DataBase - DB, RDBMS).
aleh
Это то я все понимаю,у меня вопрос в другом,что представляют из себя базы данных???
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  
Старый 01.09.2003, 15:06     # 16
aleh
Junior Member
 
Регистрация: 27.12.2002
Адрес: Belarus
Сообщения: 129

aleh Путь к славе только начался
Oracul
Есть два основных варианта (есть ещё, но это либо старо либо специфично):

* Реляционные (RDBMS) -- куча таблиц с записями (фиксированный набор полей)
* Объектные -- в чистом виде мало, иногда применяется как надстройка над реляционными (JDO)

Основная масса приложений использует RDBMS (MySQL, Oracle, SAP DB, MS SQL Server, Access, PointBase...)

Проще изучи SQL-92 и тебе станет понятно что есть база данных. Или сформулируй вопрос по другому, более конкретно (лучше создать или найди соответствующий топик** ).
aleh вне форума  
Старый 01.09.2003, 22:29     # 17
Oracul
Member
 
Регистрация: 22.01.2003
Сообщения: 247

Oracul Путь к славе только начался
Ок,спасибо,изучу,я тут задался целью изучиться все что связано с Явой
__________________
Кто не умеет притворяться,тот не умеет царствовать.
Oracul вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:22.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.