Найти количество разных чисел в массиве

Рейтинг: 0Ответов: 1Опубликовано: 14.03.2015

Имеется:

Map<String, ?> allEntries = sPrefFavorites.getAll();

private List<Integer> listOfCategory= new ArrayList<>();

Как через

for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
          String[] splited = entry.getValue().toString().trim().split("-");
          listOfCategory.add(Integer.parseInt(splited[1]));
}

Подсчитать количество разных splited[1]?

(entry вида 54-21-1, 54-10-15, 54-3-5). split нужен для поиска различий в записях по второму числу. List создал как вариант. Если есть другой вариант и он лучше - то вообще здорово.

Для примера в скобках выше, правильное количество должно быть равно 3 (21, 10 и 3 - разные числа).

Для примера 54-2-1, 54-3-5, 54-2-9, 54-3-8 - правильный ответ 2 (2 и 3 - разные числа).

Ответы

▲ 3Принят
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        HashSet<string> set = new HashSet<string>();
        string input;
        while ((input = Console.ReadLine()) != null)
        {
            string[] parts = input.Split('-');
            if (parts.Length != 3) { break; }
            set.Add(parts[1]);
        }
        foreach (string s in set)
        {
            Console.WriteLine(s);
        }
    }
}

alt text