Значение карты не увеличивается, когда он находит дубликат ключа. пожалуйста, порекомендуйте - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в Java. Пожалуйста, помогите мне получить требуемый вывод для приведенного ниже кода.Значение карты должно учитываться при повторении значения месяца

Проблема возникает из-за 2 подсписков, которые выполняются в разных потоках.Пожалуйста, сообщите, нужно ли вносить какие-либо изменения в этот код, чтобы исправить значение карты для подсчета.

int size = inputList.size();
int listSize = size/numberOfThreads;
List<String> tmplist1 = inputList.subList(0, listSize);
int count = listSize;
for (int i=0;i<numberOfThreads;i++)
{

        if(listSize <= size) {
            t1 = new TotalOrderThread();    
         t1.setInput(tmplist1);
        Thread thread = new Thread(t1);
         thread.start();
         thread.join();
        if(listSize < size)
        tmplist1 = inputList.subList(listSize, listSize+count);
        listSize=listSize+count;
        }

*

Input:
123,03/04/2005
234,04/05/2005
567,03/04/2005
789,01/01/2005

Вывод: (месяц 4 повторяется дважды, но значение не считается как 2).Пожалуйста, помогите узнать ошибку.Кроме того, есть ли возможность печатать значение месяца в формате «МММ» при повторении карты?

4    1
5    1
1    1
4    1

*

Map<Integer,Integer> orderMap = new HashMap<>();
for(int i=0;i<this.input.size();i++)
{
String details  = input.get(i);
String[] detailsarr = details.split(",");
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate id = LocalDate.parse(detailsarr[1], f);
int month = id.getMonthValue();
if(orderMap.containsKey(month))
{
int count = orderMap.get(month);
orderMap.put(month, count+1);
}

else
{
orderMap.put(month, 1);

 }
 }
for(Map.Entry<Integer,Integer> entry : orderMap.entrySet())
{
int month3 = entry.getKey();
int value = entry.getValue();
System.out.println(month3+ "    " +value);
}
}

1 Ответ

0 голосов
/ 17 сентября 2018

Я попробовал ваш код, как показано ниже. Этот работает.

Map<Integer,Integer> orderMap = new HashMap<>();

String[] input  = {"123,03/04/2005", "234,04/05/2005", "567,03/04/2005", "789,01/01/2005"};

for(int i=0;i<input.length;i++)
{
    String details  = input[i];

    String[] detailsarr = details.split(",");
    DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
    LocalDate id = LocalDate.parse(detailsarr[1], f);
    int month = id.getMonthValue();

    if(orderMap.containsKey(month))
    {
        int count = orderMap.get(month);
        orderMap.put(month, count+1);
    }

    else
    {
        orderMap.put(month, 1);

    }
 }

 for(Map.Entry<Integer,Integer> entry : orderMap.entrySet())
 {
    int month3 = entry.getKey();
    int value = entry.getValue();
    System.out.println(month3+ "    " +value);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...