J'ai une collection j'ai ajouté des informations CD, DVD, livre dans hashsets. Chacun a un mot clé et je voudrais faire une recherche pour un mot clé et retourner le livre spécifique, CD, DVD ... Heres la sortie pour vous donner une idée ..trouver un mot-clé dans une collection et le retourner
-Book-
Author: Robert A. Heinlein
# pages 325
title: Starship Troopers
keywords: [science fiction, war, weapons]
-Music-
band: Grateful Dead
# songs: 12
members: [Jerry Garcia, Bill Kreutzman, Keith Godcheaux]
title: Europe In '72
keywords: [acid rock, sixties, jam bands]
-Movie-
director: Sofia Coppola
# scenes: 14
cast: [Bill Murray, Scarlett Johansson]
title: Lost In Translation
keywords: [Japan, loneliness]
>>> items for keyword: science fiction
none
>>> items for keyword: jam bands
none
C:\Java\a03>
J'ai 3 Des classes.
- Main()
- Library - c'est là que je fais tout l'ajout de CD, DVD, livres. lookups, etc
- Articles de classe (classe CD, classe DvD, classe livre) en utilisant l'héritage ..
en main() J'envoie des informations à la classe de la bibliothèque pour ajouter aux ensembles. puis j'imprime tous les livres, cd, films qui viennent d'être ajoutés.
puis je recherche un mot-clé spécifique. Et c'est là que j'ai des problèmes. J'ai écrit une fonction getkeyword en CD, DVD, classe de livre.
Ce que je veux faire est d'obtenir le mot-clé, puis voir si elles correspondent et ensuite le retourner en tant que collection.
ici est le principal() Je ne montrer quelques-uns pour garder ce court - je ne vais pas vous montrer comment je suis d'ajouter, car il fonctionne bien ..
printItemsForKeyword(out, "science fiction");
printItemsForKeyword(out, "jam bands");
printItemsForKeyword(out, "xxx");
private static void printItemsForKeyword (PrintStream out, String keyword)
{
Collection<Item> items;
out.printf(">>> items for keyword: %s\n\n", keyword);
items = library.itemsForKeyword(keyword);
printItems(out, items);
}
maintenant ici dans la classe de la bibliothèque est où je besoin d'aide dans la itemsForKeyword fonction (mot-clé String) ...
donc, la première chose que je suis en train de trouver est « science Fiction »
Je pense que je dois jeter un objet puisque le point a la CD, DVD, classes de livres et je dois retourner une collection ion???
maintenant j'essaie de retourner la clé et il ne va pas car son incompatibilité avec le retour.
public class Library
{
private Set<Item> theCDs = new HashSet<Item>();
private Set<Item> theDVDs = new HashSet<Item>();
private Set<Item> theBooks = new HashSet<Item>();
public Collection<Item> itemsForKeyword(String keyword)
{
Item key = new Item();
((CD)key).getKeyword(); // i dont think i am even doing this right
if(key.equals(keyword))
{
return key; // cant return key
}
return null;
}
J'ai défini une fonction getKeywords() dans chacune des classes ci-dessous.
Voici la classe Articles puisque vous aurez besoin de regarder par-dessus ..
import java.io.PrintStream;
import java.util.Collection;
import java.util.*;
class Item
{
private String title;
public String toString()
{
String line1 = "title: " + title + "\n";
return line1;
}
public void print()
{
System.out.println(toString());
}
public Item()
{
}
public Item(String theTitle)
{
title = theTitle;
}
public String getTitle()
{
return title;
}
}
class CD extends Item
{
private String artist;
private String [] members;
private String [] keywords;
private int number;
public CD(String theTitle, String theBand, int Snumber, String... keywords)
{
super(theTitle);
this.artist = theBand;
this.number = Snumber;
this.keywords = keywords;
}
public void addband(String... member)
{
this.members = member;
}
public String getArtist()
{
return artist;
}
public String [] getMembers()
{
return members;
}
public String [] getKeyword()
{
return keywords;
}
public String toString()
{
return "-Music-" + "\n"
+ "band: " + artist + "\n"
+ "# songs: " + number + "\n"
+ "members: " + Arrays.toString(members)
+ "\n" + super.toString()
+ "keywords: " + Arrays.toString(keywords)
+ "\n" + "\n" ;
}
public void print()
{
System.out.println(toString());
}
}
class DVD extends Item
{
private String director;
private String [] cast;
private int scenes;
private String [] keywords;
public DVD(String theTitle, String theDirector, int nScenes, String... keywords)
{
super(theTitle);
this.director = theDirector;
this.scenes = nScenes;
this.keywords = keywords;
}
public void addmoviecast(String... members)
{
this.cast = members;
}
public String [] getCast()
{
return cast;
}
public String getDirector()
{
return director;
}
public String [] getKeyword()
{
return keywords;
}
public String toString()
{
return "-Movie-" + "\n"
+ "director: " + director + "\n"
+ "# scenes: " + scenes + "\n"
+ "cast: " + Arrays.toString(cast) + "\n"
+ super.toString()
+ "keywords: " + Arrays.toString(keywords)
+ "\n" + "\n" ;
}
public void print()
{
System.out.println(toString());
}
}
class Book extends Item
{
private String author;
private int pages;
private String [] keywords;
public Book(String theTitle, String theAuthor, int nPages, String... keywords)
{
super(theTitle);
this.author = theAuthor;
this.pages = nPages;
this.keywords = keywords;
}
public String getAuthor()
{
return author;
}
public String [] getKeyword()
{
return keywords;
}
public void print()
{
System.out.println(toString());
}
public String toString()
{
return "-Book-" + "\n"
+ "Author: " + author + "\n"
+ "# pages " + pages + "\n"
+ super.toString()
+ "keywords: " + Arrays.toString(keywords)
+ "\n" + "\n" ;
}
}
la raison pour laquelle je pense que je dois faire sometype de casting est parce que je devais quand j'ajouté .. bandmembers Alors, que puis-je faire pour trouver un mot-clé dans les articles et les renvoyer? serait-il préférable de regarder directement les ensembles et faire un certain type de distribution pour le faire revenir? im juste déconcerté ..
Merci ..
tout d'abord, placez les mots-clés dans la classe de base Item à laquelle elle appartient. – Jherico
Juste un conseil: s'il vous plaît prêter attention à la mise en forme du code. Il y a beaucoup d'espaces inutiles et l'indentation est mauvaise. Cela peut dérouter et ennuyer beaucoup de lecteurs et les amener à se déplacer le long de votre question. Si vous utilisez un EDI comme Eclipse, faire simplement Ctrl + Maj + F vous aidera beaucoup. – BalusC
Je suis d'accord .. cependant, j'utilise bluej .. il est difficile d'indenter –