Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

import java.util.Map import java.util.HashMap объесните

natalja muzq4enko Ученик (124), на голосовании 12 лет назад
import java.util.Map;
import java.util.HashMap;
public class Str2 {
public static void main(String[] args){
String word = "people";
Map< String, Integer > map = new HashMap< String, Integer >();
for (int i = 0; i < word.length(); i++) {
String letter = word.substring(i,i+1);
if( map.containsKey(letter) ) {
map.put(letter, new Integer(( Integer )map.get(letter).intValue() + 1));
} else {
map.put(letter, new Integer(1));
}
}
System.out.println(map.toString());
}
}

Прошу объясните, что здесь и как выполняется ...
Желательно по порядку огромное спасибо
Голосование за лучший ответ
ra Высший разум (113247) 12 лет назад
У меня покороче вариант

import java.util.*;

public class q74706399 {
public static void main(String[] args) {
String s = "эйяфьядлайёкюдль";
System.out.println("Слово: '" + s + "'");
Map< Character, Boolean > m = new HashMap< Character, Boolean >();
for ( char ch : s.toCharArray() ) m.put(ch, true);
System.out.println("Количество различных букв: " + m.size());
System.out.println("Буквы: " + m.keySet().toString());
}
}

Возьмите любой букварь по java и прочитайте про классы таблица (Map) и хэш-таблица (HashMap), там ничего сложного.

Кратко:
1) создается таблица (структура данных с парами <ключ, значение>, причем ключ уникален)
2) в цикле перебирается каждая буква слова и заносится в таблицу, если буква уже есть в таблице, то новой пары не появляется.
3) вывод результата: размер (количество пар) получившейся таблицы и будет количеством различных букв в слове

Но еще лучше использовать Set (множество) :

import java.util.*;

public class q74706399 {
public static void main(String[] args) {
String s = "эйяфьядлайёкюдль";
System.out.println("Слово: '" + s + "'");
Set< Character > m = new HashSet< Character >();
for ( char ch : s.toCharArray() ) m.add(ch);
System.out.println("Количество различных букв: " + m.size());
System.out.println("Буквы: " + m.toString());
}
}
Александр Искусственный Интеллект (293757) 12 лет назад
natalja muzq4enko
я подозревал что вы просто напросто ленивый человек занимающийся не своим делом.
не знаю что меня подтолкнуло дать вам это решение.

ra
ваш вариант не короче. ваш вариант выполняет другое задание и потому ни о каком короче тут речи не может вестись.

мой код, которым этот юзер тут размахивает, считает количество повторов каждой уникальной буквы в данном слове. таково было задание.
ваш код считает общее число уникальных букв и список этих букв.
почувствуйте разницу.
и к вашему сведению, постоянно писать
import java.util.*;
это признак непонимания того что вы делаете.
такая запись оправдана лишь тогда когда у вас там вагон классов импортируется их этой библиотеки.
и когда вы так импортируете, вы (в приличного размера проекте) можете нечаянно импортировать то, что вам совершенно не нужно.
так что указывать надо явно что именно вам нужно в данной конкретной программе. а то получается так что "не знаю нужно ли мне это, но у соседа в гараже такое видел, может и мне пригодится")
Похожие вопросы