Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ отображения

Автор: мисс_граффити 7.06.2007 2:46

Доброго времени суток!
<Здесь идет рассказ о тяжкой доле студенток, которые не по делу решили повыпендриваться.>
В общем, есть несколько типовых задач, которые я не представляю, как решать. Типа такого:
С помощью отображения посчитать частоту появления во входном символьном потоке каждого символа.
Посчитать с помощью отображения частоту появления в заданной строке каждого слова.
Реализовать в виде статического метода разложение целого числа на простые множители. Вернуть из метода результат разложения в виде отображения каждого множителя на степень, с которым он входит в отображение.

Ну и т.п. Их много, все похожие.
Это должны быть не полноценные программки, а буквально 3 строки кода.
Вопрос такой: никому не попадалось примеров чего-то подобного? То есть использование отображений...

Автор: hardcase 11.06.2007 5:24

Цитата(мисс_граффити @ 6.06.2007 23:46) *
Вопрос такой: никому не попадалось примеров чего-то подобного? То есть использование отображений...
Полагаю проблема в том, что такое "отображение". Отображение в java реализуется через интерфейс Map (пакет java.util) (в C++ через STL-класс map и multi_map, в C# через Dictionary)
Код

public interface Map<K,V> {
    boolean containsKey(Object key);
    boolean containsValue(Object value);
    V get(Object key);
    V put(K key, V value);
    V remove(Object key);
}

Это не полное определение, но в целом, думаю ясно, для чего нужен этот интферфейс: он позволяет ставить в соответствие объектам класса K объекты класса V. Т.е. выполнять отбражение V -> K.
Для использования этого интерфейса есть классы:
Код

public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable
{
...
}

public interface SortedMap<K,V> extends Map<K,V>
{
...
}

И ещё очень и очень много Map-ов. Если воспользоваться поиском по rt.jar (в нем лежит пакет java.util) можно найти дофига классов.

Вот для затравки:
Код

import java.lang.*;
import java.util.*;
import java.io.*;
public class Main {

    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(new Integer(10), "String 1!");
        map.put(new Integer(11), "hello, world!");
        map.put(new Integer(12), "Another one sting");
        map.put(new Integer(13), "Превед, мир!");
        System.out.println(map.toString());
    }
}

Но для стринг-интов есть свой класс - StringIntMap, и для неважно чего - KeyIntMap.

По поводу задач - они простые, сама осилишь ;)

Автор: мисс_граффити 13.06.2007 3:46

Цитата
По поводу задач - они простые, сама осилишь

да, конечно.
спасибо... написал именно то, чего мне не хватало! smile.gif