2017-04-08 5 views
0

これは私のバンレンタルデータベースの開始コードです。Javaでリンクされた2つのリストの要素をリンクする方法は?

List<String> manual = new LinkedList<>(); 
List<String> automatic = new LinkedList<>(); 
List<String> location = new LinkedList<>(); 

manual.add("Queen"); 
manual.add("Purple"); 
manual.add("Hendrix"); 

automatic.add("Wicked"); 
automatic.add("Zeppelin"); 
automatic.add("Floyd"); 
automatic.add("Ramones"); 
automatic.add("Nirvana"); 

location.add("CBD"); 
location.add("Penrith"); 
location.add("Ceremorne"); 
location.add("Sutherland"); 

車をその場所にリンクするにはどうすればよいですか? たとえば、CBDにはWicked、Zepplin、Floydがあり、PenrithにはQueenがあります。 コマンドライン引数に "CBDを印刷する"がある場合は、CBDで利用可能なバンを表示する必要があります。

ご協力いただければ幸いです。

+1

まず、車を表すクラスを作成し、別の場所を表すクラスを作成します。 –

+0

@JoeCとどうやって接続すればいいですか?申し訳ありませんが、これは非常に新しいです –

+0

またはデータベース内の「エンティティ」を表す1つのクラスは、そのクラスに必要なすべてのプロパティを提供します。例えば、 'make '、' manual/auto'、 'location'を持つエンティティは、上記の要件を満たすでしょう – markspace

答えて

2

これはほとんどデータベースではありません。彼らはちょうど3つの別々のデータです。クラスと呼ばれるクラスなどのクラスを作成するには、オブジェクト指向の設計手法を使用します。たとえば、まさにJavaコードではありません。

Class Van { 
    string name; 
    VanType type; // e.x, Enum {auto, manual} 
    Location location; // another class 
} 
0

In This Postというアプローチを使用する方が良いと思います。私はこれがはるかに明確な実装であると信じています。

こちらがお役に立てば幸いです。

0

これはコードです。 リンクされたリストのみを使用しています。 (リンクされたリストは入力順にトラックされているため、これも使用しています) 1対多関係であるため、関連するオブジェクトを見るために何らかの「外部キー」が必要です。手動または自動に関係なく追加する車ごとに、の下に表示されているように、場所のキーを追加する必要があります(例:rels [0] = 3;あなたの最初の車がロケーションリストの4番目のオブジェクトとの関係を持つことを意味します。コードに実装されているもの - 一見してみてください。

import java.util.Iterator; 
import java.util.LinkedList; 
import java.util.List; 

public class TestMain { 

    public static void main(String[] args) { 

     List<String> manual = new LinkedList<String>(); 
     List<String> automatic = new LinkedList<String>(); 
     List<String> location = new LinkedList<String>(); 
     int[] rels = new int[8]; 

     //cars with relations 
     rels[0] = 1; 
     manual.add("Queen"); 
     rels[1] = 1; 
     manual.add("Purple"); 
     rels[2] = 1; 
     manual.add("Hendrix"); 
     rels[3] = 1; 
     automatic.add("Wicked"); 
     rels[4] = 0; 
     automatic.add("Zeppelin"); 
     rels[5] = 0; 
     automatic.add("Floyd"); 
     rels[6] = 1; 
     automatic.add("Ramones"); 
     rels[7] = 2; 
     automatic.add("Nirvana"); 

     //key-0 
     location.add("CBD"); 
     //key-1 
     location.add("Penrith"); 
     //key-2 
     location.add("Ceremorne"); 
     //key-3 
     location.add("Sutherland"); 

     //here is the value that you have from your input args[] for example 
     String desiredLocation = "CBD"; 

     int index = getLocationIndex(location, desiredLocation); 
     //if desired location not found we will print nothing 
     if(index==-1)return; 

     List mergedCars = new LinkedList<String>(); 
     mergedCars.addAll(manual); 
     mergedCars.addAll(automatic); 

     for (int i = 0; i < rels.length; i++) { 
      if(index == rels[i]) 
      { 
       System.out.println(mergedCars.get(i)); 
      } 
     } 

    } 

    private static int getLocationIndex(List<String> location, String desiredLocation) { 
     int counter=0; 
     for (Iterator iterator = location.iterator(); iterator.hasNext();) { 
      String temp = (String) iterator.next(); 
      if(temp.equals(desiredLocation)) 
      { 
       return counter; 
      } 
      counter++; 
     } 
     return -1; 
    } 
} 
関連する問題