Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова з Прикладного програмування.doc
Скачиваний:
34
Добавлен:
17.11.2019
Размер:
1.01 Mб
Скачать

2.3 Приклад використання об’єктів

В даній програмі буде виконано присвоювання цифрових значень для набору елементів.

Приклад використання TreeMap:

import java.util.*;

class TreeMapDemo{

public static void main(String args[]){

//створити карту-дерево

TreeMap<String, Double> tm=new TreeMap<String, Double>();

//перемістити елементи в карту

tm.put(''Джон Доу'', new Double(3434.34));

tm.put(''Том Сміт'', new Double(123.22));

tm.put(''Джейн Бейкер'', new Double(1378.00));

tm.put(''Тод Халл', new Double(99.22));

tm.put(''Ральф Сміт'', new Double(-19.08));

//отримати набір елементів

Set<Map.Entry<String, Double>> set = tm.entrySet();

//відобразити елементи

for(Map.Entry<String, Double> me : set) {

System.out.print(me.getKey()+'': '');

System.out.print(me.getValue());

}

System.out.println();

//добавити 1000 на рахунок Джона Доу

double balance = tm.get(''Джон Доу'');

tm.put(''Джон Доу'', balance + 1000);

System.out.println(''Новий баланс Джона Доу: '' +

tm.get(''Джон Доу''));

} }

Ось так виглядає вивід програми:

Джейн Бейкер: 1378.0

Джон Доу: 3434.34

Ральф Сміт: -19.08

Тод Халл: 99.22

Том Сміт: 123.22

Новий рахунок Джона Доу: 4434.34

У наступному прикладі обчислюється кількість входжень різних слів у речення. Слова і відповідні кількості зберігаються в асоціативному масиві. Використання класу TreeMap гарантує алфавітний порядок слів (ключів).

import java.util.*;

public class WordsCounter {

public static void main(String[] args) {

Map<String, Integer> m = new TreeMap<String, Integer>();

String s = "the first men on the moon";

StringTokenizer st = new StringTokenizer(s);

while (st.hasMoreTokens()) {

String word = st.nextToken();

Integer count = m.get(word);

m.put(word, (count == null) ? 1 : count + 1);

}

for (String word : m.keySet())

System.out.println(word + " " + m.get(word));

} }

Метод accept() повертає true для файлів каталогу, що вказані в directory, і що повинні бути включені в список(тобто ті що відповідають аргументу filename), та повертає false для файлів, котрі потрібно виключити зі списку.

Клас OnlyExt реалізує FilenameFilter. Він буде використаний так, щоб обмежити видимість імен файлів, повернутих методом list(), тільки тими з них, що закінчуються розширенням, вказаним при конструюванні цього об’єкта.

Import java.io.*;

public class OnlyExt implements FilenameFilter {

String ext;

public OnlyExt(String ext) {

this.ext = ''.'' + ext;

}

public boolean accept(File dir, String name){

return name.endWith(ext); }}

Модифікована програма перегляду лістингу каталогів показана нижче. Тепер вона буде виводити тільки файли з розширенням .html.

Каталог файлів .HTML:

import java.io.*;

class DirListOnly {

public static void main(String args[]){

String dirname = ''/java'';

File f1 = new File(dirname);

FilenameFilter only = new OnlyExt(''html'');

String s [] = f1.list(only);

for (int i =0; i<s.length; i++) {

System.out.println(s[i]);

}}}

public String[] list(FilenameFilter filter)

У наступному прикладі об'єкт FilenameFilter використовується для того, щоб до списку включалися тільки каталоги:

import java.io.*;

class DorFilter implements FilenameFilter {

public boolean accept(File dir, String name) {

return newFile(dir, name).isDirectory();

}

public static void main(String[] args) {

File dir = new File(args [0]);

String[] files = dir.list(new DirFilter());

System.out.println(files.length + ''dir(s): '');

for (int i = 0; i<< filter.length; i++)

System.out.println(''\t ''+files[i]);