Empfängt tabellarische Objekte aus der Datenbank in Java Ich war krank, als ich dieses Objekt in einem strukturierten Objekt gespeichert habe ...
Ein Memo der Lösung, das gleichzeitig als Memorandum dient.
Name des Herausgebers(Publisher) | Genre(Genre) | Bücher(Book) |
---|---|---|
Firma A. | Programmierung | Grundlegende Zusammenfassung |
Firma A. | Programmierung | Sogar Affen können verstehen |
Firma A. | Shogi | Grundlegende Zusammenfassung |
Firma A. | Shogi | Sogar Affen können verstehen |
Firma B. | Programmierung | Grundlegende Zusammenfassung |
Firma B. | Shogi | Sogar Affen können verstehen |
Firma A. | Programmierung | Außer Betrieb |
Ich habe diese Art von Tabellendaten von BD erhalten
|
|--Firma A.---------Programmierung---------Grundlegende Zusammenfassung
| | |
| | |----Sogar Affen können verstehen
| | |
| | |----Außer Betrieb
| |
| |
| |----Shogi------------Grundlegende Zusammenfassung
| |
| |----Sogar Affen können verstehen
|
|
|--Firma B.---------Programmierung---------Grundlegende Zusammenfassung
| |
| |----Shogi---------Grundlegende Zusammenfassung
Ich möchte einem Java-Objekt wie diesem zuordnen.
Wenn Sie einen Verlag auswählen, wird das entsprechende Genre angezeigt. Wenn Sie ein Genre auswählen, werden die entsprechenden Buchinformationen angezeigt ...
Schließlich möchte ich eine Liste der Verlage.
BookResultMap
package dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BookResultMap {
private String publisherName;
private String genreName;
private String bookTitle;
public BookResultMap() {}
public BookResultMap(String publisherName, String genreName, String bookTitle) {
this.publisherName = publisherName;
this.genreName = genreName;
this.bookTitle = bookTitle;
}
}
Buch: Eine Klasse, die Buchinformationen darstellt.
Genre: Eine Klasse, die ein Genre darstellt. Es hat List
Book.java
package model;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Book {
private String bookTitle;
}
Genre.java
package model;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Genre {
private String genreName;
private List<Book> bookList;
}
Publisher.java
package model;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class Publisher {
private String publisherName;
private List<Genre> genreList;
}
DataConvert.java
package logic;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import dto.BookResultMap;
import model.Book;
import model.Genre;
import model.Publisher;
public class DataConvert {
public static List<Publisher> convertObject(List<BookResultMap> bookResultMaps) {
/*Eine Karte, in der jede Beziehung gespeichert ist.
*Der Wert der Karte mit PublishName als Schlüssel.
*Stellen Sie eine Karte mit genreName als Schlüssel ein.
*/
Map<String, Map<String, List<Book>>> convertMap = new HashMap<>();
for(int i = 0; i < bookResultMaps.size(); i++) {
String publisherName = bookResultMaps.get(i).getPublisherName();
String genreName = bookResultMaps.get(i).getGenreName();
Book book = new Book();
book.setBookTitle(bookResultMaps.get(i).getBookTitle());
/*1.Wenn publisherName in convertMap nicht als Schlüssel vorhanden ist
*Erstellen Sie eine HashMap mit PublishName als Schlüssel in convertMap.
*/
if(!convertMap.containsKey(publisherName)) {
convertMap.put(publisherName, new HashMap<>());
}
/*2.Wenn geneName convertMap ist.get(publisherName)Wenn es nicht als Schlüssel zu existiert
* convertMap.get(publisherName)Erstellen Sie eine HashMap mit PublishName als Schlüssel.
*/
if(!convertMap.get(publisherName).containsKey(genreName)) {
convertMap.get(publisherName).put(genreName, new ArrayList<>());
}
/*1,Durch die Arbeit von 2
*Weil Sie die ArrayList im Genre abrufen können, das sich auf den Herausgebernamen bezieht
*Bewahren Sie das Buch dort auf.
* */
convertMap.get(publisherName).get(genreName).add(book);
}
//Ersetzen Sie die in convertMap gespeicherten Informationen durch ein Java-Objekt.
List<Publisher> publisherList = new ArrayList<>();
for(String publisherName: convertMap.keySet()) {
Publisher publisher = new Publisher();
List<Genre> genreList = new ArrayList<>();
publisher.setPublisherName(publisherName);
publisher.setGenreList(genreList);
publisherList.add(publisher);
for(String genreName: convertMap.get(publisherName).keySet()) {
Genre genre = new Genre();
genre.setGenreName(genreName);
genre.setBookList(convertMap.get(publisherName).get(genreName));
genreList.add(genre);
}
}
return publisherList;
}
}
DataConvert.java
public class DataConvert {
public static void main(String[] args) {
//Ein Objekt, das die Tabellenform so wie sie ist aus der Datenbank empfängt
List<BookResultMap> bookResultMaps = new ArrayList<>();
BookResultMap brm1_1_1 = new BookResultMap("Firma A.", "Programmierung", "Grundlegende Zusammenfassung");
BookResultMap brm1_1_2 = new BookResultMap("Firma A.", "Programmierung", "Sogar Affen können verstehen");
BookResultMap brm1_2_1 = new BookResultMap("Firma A.", "Shogi", "Grundlegende Zusammenfassung");
BookResultMap brm1_2_2 = new BookResultMap("Firma A.", "Shogi", "Sogar Affen können verstehen");
BookResultMap brm2_1_1 = new BookResultMap("Firma B.", "Programmierung", "Grundlegende Zusammenfassung");
BookResultMap brm2_2_1 = new BookResultMap("Firma B.", "Shogi", "Grundlegende Zusammenfassung");
BookResultMap brm1_1_3 = new BookResultMap("Firma A.", "Programmierung", "Außer Betrieb");
bookResultMaps.add(brm1_1_1);
bookResultMaps.add(brm1_1_2);
bookResultMaps.add(brm1_2_1);
bookResultMaps.add(brm1_2_2);
bookResultMaps.add(brm2_1_1);
bookResultMaps.add(brm2_2_1);
bookResultMaps.add(brm1_1_3);
//Datenkonvertierung
List<Publisher> publisherList = convertObject(bookResultMaps);
//Bestätigung
System.out.println("publisherList Größe:" + publisherList.size());
for(Publisher publisher: publisherList) {
System.out.println("-------------------"+ publisher.getPublisherName() +"-----------------------");
System.out.println("Größe der GenreListe:" + publisher.getGenreList().size());
for(Genre genre: publisher.getGenreList()) {
System.out.println("-------"+ genre.getGenreName() +"--------");
System.out.println("bookList Größe:"+ + genre.getBookList().size());
for(Book book: genre.getBookList()) {
System.out.println("----");
System.out.println(publisher.getPublisherName());
System.out.println(genre.getGenreName());
System.out.println(book.getBookTitle());
}
}
}
}
}
publisherList Größe:2
-------------------Firma B.-----------------------
Größe der GenreListe:2
-------Programmierung--------
bookList Größe:1
----
Firma B.
Programmierung
Grundlegende Zusammenfassung
-------Shogi--------
bookList Größe:1
----
Firma B.
Shogi
Grundlegende Zusammenfassung
-------------------Firma A.-----------------------
Größe der GenreListe:2
-------Programmierung--------
bookList Größe:3
----
Firma A.
Programmierung
Grundlegende Zusammenfassung
----
Firma A.
Programmierung
Sogar Affen können verstehen
----
Firma A.
Programmierung
Außer Betrieb
-------Shogi--------
bookList Größe:2
----
Firma A.
Shogi
Grundlegende Zusammenfassung
----
Firma A.
Shogi
Sogar Affen können verstehen
Ich konnte diese Informationen mit dem Verlag und dem Genre verknüpfen.
Ich denke, es gibt andere Möglichkeiten, aber vorerst habe ich meine eigene Lösung geschrieben. Wenn Sie die Reihenfolge der Tabellen beibehalten möchten, können Sie HashMap in LinkedHashMap ändern. Ich wäre Ihnen dankbar, wenn Sie mir mitteilen könnten, ob es bessere Methoden oder Verbesserungen gibt.
Durch Sortieren nach SQL oder Ändern der Struktur, Ich möchte, dass Sie die Tabellendaten in einer Form erhalten, die einfacher zu verarbeiten ist ...
Recommended Posts