Java Java Data Structures Exploring the Java Collection Framework Maps

RAHUL RAO
RAHUL RAO
27,748 Points

Map test bummer below is the error message. Bummer - For category Food, expected 2 but received 1.

while looping through the blogpost for category using hashmap it pompts error .i know syntax is perfect is correct but problem is with the logic please solve it if possible.below i had mention the Error i m getting while executing the code.

Bummer - For category Food, expected 2 but received 1.

com/example/BlogPost.java
package com.example;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


public class BlogPost implements Comparable<BlogPost>, Serializable {
  private String mAuthor;
  private String mTitle;
  private String mBody;
  private String mCategory;
  private Date mCreationDate;

  public BlogPost(String author, String title, String body, String category, Date creationDate) {
    mAuthor = author;
    mTitle = title;
    mBody = body;
    mCategory = category;
    mCreationDate = creationDate;
  }

  public int compareTo(BlogPost other) {
    if (equals(other)) {
      return 0;
    }
    return mCreationDate.compareTo(other.mCreationDate);
  }

  public String[] getWords() {
    return mBody.split("\\s+");
  }

  public List<String> getExternalLinks() {
    List<String> links = new ArrayList<String>();
    for (String word : getWords()) {
      if (word.startsWith("http")) {
        links.add(word);
      }
    }
    return links;
  }

  public String getAuthor() {
    return mAuthor;
  }

  public String getTitle() {
    return mTitle;
  }

  public String getBody() {
    return mBody;
  }

  public String getCategory() {
    return mCategory;
  }

  public Date getCreationDate() {
    return mCreationDate;
  }
}
com/example/Blog.java
package com.example;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Blog {
  List<BlogPost> mPosts;

  public Blog(List<BlogPost> posts) {
    mPosts = posts;
  }
  public Map<String,Integer> getCategoryCounts(){
   Map<String,Integer> categoryToCount = new HashMap<String,Integer>();
    for(BlogPost post : mPosts){
      Integer count = categoryToCount.get(post);
      if(count==null){
       count =0;   
      }

      count = count + 1;
       categoryToCount.put(post.getCategory(),count);

    }
    return categoryToCount;

  }




  public List<BlogPost> getPosts() {
    return mPosts;
  }

  public Set<String> getAllAuthors() {
    Set<String> authors = new TreeSet<>();
    for (BlogPost post: mPosts) {
      authors.add(post.getAuthor());
    }
    return authors;
  }


}

1 Answer

try this

Integer count = categoryToCount.get(post.getCategory());