【问题标题】:How to link elements of two linked list in java?如何在java中链接两个链表的元素?
【发布时间】:2017-04-08 16:30:59
【问题描述】:

这是我的面包车租赁数据库的起始代码。

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 中可用的货车。

任何帮助将不胜感激。

【问题讨论】:

  • 首先创建一个类来表示您的汽车,然后再创建一个类来表示您的位置。
  • @JoeC 我们如何连接它们?抱歉,我对此很陌生
  • 或者一个类来表示数据库中的一个“实体”,然后为该类提供它需要的所有属性。例如,具有make,manual/auto,location 的实体将满足上述要求

标签: java linked-list singly-linked-list


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我认为您最好使用In This Post 解释的方法。我相信这将是一个更清晰的实现。

    我希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      好的,这就是代码。 我们只使用您想要的链表。 (链表跟踪输入顺序,所以我们也使用它) 由于它是一对多的关系,我们应该有某种“外键”,以便我们可以看到相关的对象。对于您添加的每辆汽车,无论是手动还是自动,您都应该为该位置添加一个密钥,如下所示 例如 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;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多