【问题标题】:Java - Name of Array Equals Value of String VariableJava - 数组名称等于字符串变量的值
【发布时间】:2016-04-13 21:51:05
【问题描述】:

我有 10 个数组列表和一个字符串变量。 我有一个函数/方法允许用户选择要添加到的数组列表之一。目前,该函数将字符串“chosen”的值更改为正确的数组列表名称的值。

启动另一个函数,在该函数中将元素添加到 arraylist。但是,我正在努力想出一个解决方案,说明如何根据用户选择的内容更改要添加的数组列表。

这段代码不起作用,但说它是:

chosen.add(whatUserEntered);

通常您可以输入 arrayList 名称并添加 .add(whateverTheUserIsEntering) 并且它会正常工作。

那么如何让 arrayList 的名称等于 String 变量的值呢?

【问题讨论】:

  • 使用Map。 Map 的旧名称是“符号表”,用于将程序中的名称绑定到内存地址。这基本上就是你在这里所做的。
  • 简单.. 保留 的地图。因此,当用户选择一个数组列表名称时,您可以在内部取出代表它的 your 引用并添加值:)

标签: java arrays string variables arraylist


【解决方案1】:

这是一个使用Map 将字符串名称绑定到列表的示例。当您需要在运行时(而不是编译时,如您的示例 choosen.add(userEntered) 所示)将事物放在一起时,您通常需要使用 Map。

这适用于从文件中读取的字符串(例如将 XML 名称绑定到对象)或解释器之类的东西,您必须按名称跟踪用户变量。

public class SymbolTableExample
{
   public static void main(String[] args) {
      // Some array lists
      ArrayList<String> cats = new ArrayList<>();
      ArrayList<String> dogs = new ArrayList<>();
      ArrayList<String> beetles = new ArrayList<>();
      ArrayList<String> cows = new ArrayList<>();

      // Bind names to them
      Map<String,List<String>> binding = new HashMap<>();
      binding.put( "cats", cats );
      binding.put( "dogs", dogs );
      binding.put( "beetles", beetles );
      binding.put( "cows", cows );

      // Pretend the user enters some input here
      String userChoice = "cats";
      String userEntered = "flufy";
      binding.get( userChoice ).add( userEntered );

   }
}

【讨论】:

  • Map&lt;String, List&lt;String&gt;&gt;代替Map&lt;String, ArrayList&lt;String&gt;&gt;有什么好处?
  • @Arc676 我猜是"Program to an interface." 因为我这里不需要ArrayList 的任何特殊方法,所以我没有真正考虑就选择了List。我想也有充分的理由使用ArrayList
【解决方案2】:

使用Map

public interface Map<K,V>

你可以使用方法

V put(K key, V value)

给一个键赋值,这样你就可以为不同的键设置ArrayLists 或者添加新的..

由于您使用的是ArrayLists,您可以像这样制作您的地图:

Map<String, ArrayList<String>)> myArrays

然后,要使用给定键向数组添加值,请使用

myArrays.get(userChosenArrayKey).add(whatUserEntered)

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    相关资源
    最近更新 更多