2017-04-08 114 views
0

这是我的面包车租赁数据库的起始代码。如何链接java中两个链表的元素?

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有女王。 因此,如果命令行争论有“打印CBD”,那么它必须显示CBD中可用的货车。

任何帮助将不胜感激。

+1

首先创建一个类来表示您的汽车,另一个表示您的位置。 –

+0

@JoeC,我们如何连接它们?对不起,我是一个非常新的 –

+0

或者一个类代表数据库中的“实体”,然后给这个类所需的所有属性。例如,具有'make,''manual/auto,'和'location'的实体可以满足上述要求 – markspace

回答

2

这几乎不是数据库。他们只是三个独立的数据。使用一些面向对象的设计技术来创建类,例如称为Van的类。例如,它不完全是Java代码,仅举个例子。

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

我想你会更好地使用解释为In This Post的方法。我相信这将是一个更清晰的实施。

我希望这会有所帮助。

0

好的,这是代码。 我们只使用链接列表,因为你想要的。 (链表跟踪输入顺序,所以我们也使用) 因为它是一对多的关系,我们应该有某种“外键”,所以我们可以看到相关的对象。对于您添加的每辆车,无论是手动还是自动添加,您都应该为该位置添加一个键,例如 ,例如rels [0] = 3;意味着您的第一辆车将与位置列表的第四个对象有关系。在代码中实现 - 看一看。

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