Speichern Sie das empfangene Java-Objekt in tabellarischer Form im entsprechenden Modell

Über diesen Artikel

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.

Einführung

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.

Java-Objekt

Java-Objekt zum Abrufen von Tabelleninformationen

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;
	}
}

Java-Objekt, das die Daten schließlich speichert

Buch: Eine Klasse, die Buchinformationen darstellt. Genre: Eine Klasse, die ein Genre darstellt. Es hat List als Element. Herausgeber: Eine Klasse, die Herausgeberinformationen darstellt. Es hat List als Element.

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;
}

Implementierung

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;
	}
}


Bestätigung

Eingang

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());
				}
			}
		}
	}
}

Ausgabeergebnis

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.

Am Ende

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

Speichern Sie das empfangene Java-Objekt in tabellarischer Form im entsprechenden Modell
Formatieren Sie XML in Java
twitter4j java Speichern Sie die gesuchten Tweets in DB (MySQL).
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Implementieren Sie einen tabellengesteuerten Test in Java 14
Errate den Zeichencode in Java
Geben Sie den Java-Speicherort in eclipse.ini an
Entpacken Sie die Zip-Datei in Java
Analysieren der COTOHA-API-Syntaxanalyse in Java
Rufen Sie die Super-Methode in Java auf
Holen Sie sich das Ergebnis von POST in Java
Überprüfen Sie den Inhalt des Java-Zertifikatspeichers
Java-Referenz zum Verständnis in der Abbildung
Versuchen Sie es mit der Stream-API in Java
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Über das neue Release-Modell von Java @ Seki Java (20.07.2018)
Ich habe das neue Yuan-Problem in Java ausprobiert
Notizen im Kopf organisieren (Java-Arrangement)
Java erstellt eine Tabelle in einem Word-Dokument
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
Ausgabedatum in Java im erweiterten ISO 8601-Format
Was ist die Hauptmethode in Java?
Unveränderlich (unveränderlich) Listet die Objektkonvertierungsfunktion in Java8 auf
So erhalten Sie das Datum mit Java
Die Geschichte von Java SE11 Silber erhalten
Die Geschichte des Schreibens von Java in Emacs
Konsoleneingabe in Java (Verständnis des Mechanismus)
Ich habe die Daten der Reise (Tagebuchanwendung) in Java erhalten und versucht, sie # 001 zu visualisieren