Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2018, 12:38   #1
AD86
Новичок
Джуниор
 
Регистрация: 20.06.2011
Сообщений: 2
По умолчанию Проблема вывода данных

Имеется код написан мной:
Код:
import java.security.KeyStore;
import java.util.*;
import java.util.stream.Collectors;

public class C {
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    ValueComparator bvc = new ValueComparator(map);
    TreeMap<String, Integer> sorted_map = new TreeMap<String, Integer>(bvc);
    public static void main(String[] args) {
        FruitSort fruitSort = new C().new FruitSort();
        fruitSort.enterChat();
    }

    class FruitSort {
        private String[] massivFruit;

        void enterChat() {
            Scanner scanner = new Scanner(System.in);
            int number = scanner.nextInt();
            massivFruit = new String[number];

            for (int i = 0; i < massivFruit.length; i++) {
                Scanner scannerName = new Scanner(System.in);
                String name = scannerName.next();
                massivFruit[i] = name;
            }
            sortFruit();
        }

        void sortFruit() {
            for (int i = 0; i < massivFruit.length; i++) {
                int count = 0;
                for (int j = 0; j < massivFruit.length; j++) {
                    if (massivFruit[i].equals(massivFruit[j])) {
                        count++;
                    }
                }
                map.put(massivFruit[i], count);
            }


            sorted_map.putAll(map);
            System.out.println(sorted_map);
            for (String key : sorted_map.keySet()) {
                System.out.println(key);
            }
        }
    }
    class ValueComparator implements Comparator<String> {
        Map<String, Integer> base;

        public ValueComparator(Map<String, Integer> base) {
            this.base = base;
        }
        public int compare(String a, String b) {
            if (base.get(a) >= base.get(b)) {
                return -1;
            } else {
                return 1;
            }
        }
    }
}
Вроде все работает но одно .Если делаю тестирование к примеру ввожу:

6
Яблоко
Лимон
Дыня
Дыня
Лимон
Яблоко
То происходит вывод:

{Лимон=2, Яблоко=2, Дыня=2}
Лимон
Яблоко
Дыня
Вопрос у меня следующий. Мне нужен следующий порядок:

Яблоко = 2 , Лимон = 2, Дыня = 2

А почему то меняются местами элементы . Возможно сделать что бы их порядок был таков, если значения values совпадают то порядок остался таким же как и был введен. Если к примеру values больше чем остальные то печатается вверху. К примеру:

5
Лимон
Яблоко
Яблоко
Банан
Киви
Должно вывести:

Яблоко = 2, Банан = 1,Киви = 1,Лимон = 1


Может кто подскажет что я делаю не то.
Если суть задания вам точно рассказать то оно следующее. Вносим список фруктов каждый фрукт с новой строки. К примеру Лимон,Яблоко,Дыня,Яблоко. В итоге должно вывести Вначале Яблоко так как он встречаться больше всех то есть два раза . Затем после яблока следующий фрукт это дыня а затем Лимон. Я пробовал делать через TreeMap. Но выводит не так как нужно
AD86 вне форума Ответить с цитированием
Старый 05.10.2018, 15:12   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

при каждом вводе сортирует в порядке количества и никоим образом НЕ учитывает порядок "первого знакомства"
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.10.2018, 15:31   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
при каждом вводе сортирует в порядке количества и никоим образом НЕ учитывает порядок "первого знакомства"
+1


Цитата:
Сообщение от AD86 Посмотреть сообщение
Вопрос у меня следующий. Мне нужен следующий порядок:
Яблоко = 2 , Лимон = 2, Дыня = 2
мне кажется, что Вы ошибочно толкуете условие.
в условии нет указания на то, в каком порядке должны выводиться фрукты, с одинаковым количеством.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с порядком вывода Poma][a Общие вопросы Delphi 3 15.05.2012 22:34
Метод вывода данных lawliet93 Общие вопросы C/C++ 3 30.08.2011 18:39
Проблема вывода гиперссылок в DBGrid!!!!!!! trad C/C++ Базы данных 0 15.12.2010 21:40
Проблема вывода текста. Bilargo Помощь студентам 4 26.10.2009 15:31
проблема вывода! Рустам PHP 18 28.05.2009 13:01