Вопрос по списку Java - PullRequest
       4

Вопрос по списку Java

4 голосов
/ 01 февраля 2010

У меня есть такая программа

public class no_of_letters_count {
static int i;
 public static void main(String[] args) 
 {

  String sMessage="hello how r u";
  String saMessage[] = sMessage.split("");
  List sList = Arrays.asList(saMessage);                  
  Collections.sort(sList);
  Iterator i=sList.iterator();
  while (i.hasNext())
  {
   System.out.println((String)i.next());
  }
 }
}

//Now i want to count the number of occurance of each characters.

Как

Количество ч = 2

Количество е = 1

и т. Д.

Ответы [ 4 ]

4 голосов
/ 01 февраля 2010

Переберите sList и поместите каждый char в HashMap. Если он не существует, начните с счетчика 1, в противном случае увеличьте счет.

РЕДАКТИРОВАТЬ: Не могу не опубликовать код.

Прежде всего, используйте гнерику.

List<Character> sList = Arrays.asList(saMessage.toCharArray()); 

Тогда используйте следующую карту:

Map<Character, Integer> cmap = new HashMap<Character, Integer>();
1 голос
/ 01 февраля 2010

Использование commons-collection и commons-lang

List<Character> chars = Arrays.asList(
     ArrayUtils.toObject("asdfasdas".toCharArray()));
Bag bag = new HashBag(chars);

System.out.println(bag.getCount('a'));
0 голосов
/ 01 февраля 2010

Печатает количество вхождений символов из A-Z и a-z

Примечание : использование символа в качестве индекса массива, небезопасно, если у вас есть символы Unicode :), но я думаю, что это хорошая идея !!

String str = "sometext anything";
int[] array=new int[256];

for (int x:array) array[x]=0;

for (char c:str.toCharArray()){
    array[c]++;
}

for (int i=65;i<=90; i++){
    System.out.println("Number of "+(char)i+ "="+array[i]
                + ", number of "+(char)(i+32)+"="+ array[i+32]);
}
0 голосов
/ 01 февраля 2010

Вот несколько подсказок:

Кажется, вы просто пытаетесь получить символы в String.Используйте String.toCharArray().

. Используйте Map<Character,Integer>, чтобы сохранить символы и их вхождения:

foreach char c in sMessage.ToCharArray()
if map.containsKey(c)
  map.put(c, map.get(c) + 1);
else
  map.put(c, 1);

Затем отсортируйте карту и представьте результаты.Я оставляю вам фрагмент кода для сортировки карты:

    List<Entry<Character,Integer>> l = new ArrayList<Entry<Character,Integer>>(map.entrySet());

    Collections.sort(l, new Comparator<Entry<Character,Integer>>() {
        public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
            return o1.getKey().compareTo(o2.getKey());
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...