繁体   English   中英

Java-数组名称等于字符串变量的值

[英]Java - Name of Array Equals Value of String Variable

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

启动另一个功能,其中将元素添加到arraylist中。 但是,我正在努力提出一个解决方案,以根据用户选择的内容来更改要添加到哪个arraylist的方法。

该代码不起作用,但说是:

chosen.add(whatUserEntered);

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

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

这是一个使用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

public interface Map<K,V>

您可以使用方法

V put(K key, V value)

为键分配值,因此您可以为不同的键设置ArrayList或添加新键。

由于使用的是ArrayList ,因此可以使Map如下所示:

Map<String, ArrayList<String>)> myArrays

然后,要将值添加到具有给定键的数组中,请使用

myArrays.get(userChosenArrayKey).add(whatUserEntered)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM