Java Java Data Structures Exploring the Java Collection Framework Sets

Erik Gratz
Erik Gratz
19,168 Points

Cannot Find Symbol mPosts?

I'm in the challenge section of this lesson where it asks to implement the getAllAuthors method, and in the compiler I am getting a Cannot Find Symbol when I try to reference what should be the public variable mPosts. Any help would be great... getting frustrated.

package com.example;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Set;


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 Set <String> getAllAuthors () {
    Set <String> authors = new TreeSet<String> ();
    for (BlogPost post : mPosts){
        authors.add(post.getAuthor());
    }
    return authors;
  }

  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;
  }
}
package com.example;

import java.util.List;

public class Blog {
  List<BlogPost> mPosts;

  public Blog(List<BlogPost> posts) {
    mPosts = posts;
  }

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

1 Answer

Daniel Bell
Daniel Bell
17,000 Points

It's looking for mPosts in the scope of BlogPost but you need to be accessing it through an instance of Blog.

This getAllAuthors() method seems like it would be more at home in the Blog class.

Erik Gratz
Erik Gratz
19,168 Points

That makes perfect sense. Thanks!