Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Имеется код написан мной:
Код:

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, 16:12   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,753
Репутация: 2097
По умолчанию

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

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


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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с порядком вывода 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 22:40
Проблема вывода текста. Bilargo Помощь студентам 4 26.10.2009 16:31
проблема вывода! Рустам PHP 18 28.05.2009 13:01


10:28.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru