将数组中的字符串映射到相应的实现类

时间:2016-06-29 19:01:30

标签: java interface polymorphism maps

我有一个分裂String部分的数组:

        String[] message = input.split("\\|");
        String[] parts;

        for (String line : message) {
            parts = line.split("-");
            //insert code here
        }
拆分后的

parts如下所示:

[MO, KB, 001]
[MO, PR, 001]
[MO, PR, 002]

其中MO表示MOUSE,KB =键盘,PR =打印机等。

  1. 如何提取元素中的数字(例如001,002)并将其添加到Map以用作Key,而Values是是相应的设备密钥,例如MO,PR等确保没有重复的密钥和密钥的值?这样就可以遍历地图并处理每个设备的键集......

     public interface Device {
        void create();
    
        void fix();
    }
    
     public Printer implements Device {
        public void create() {
            //logic to create
        } 
    
  2. 当我查找要针对特定​​密钥创建的设备列表时,我应该获得List Devices映射到该密钥的Devices。对于每个密钥,我想创建映射到它的String。例如。 for key = 001创建MO,PR& KB设备。如何将这些create()值设备密钥映射到相应的实现类,以便在调用drop时,它使用子类型的实现方法创建设备。

2 个答案:

答案 0 :(得分:1)

Route::group(['prefix' => 'admin'], function () {
  $this->app->bind('view.finder', function ($app) {
    $paths = [realpath(base_path('resources/views/admin'))];
    return new \Illuminate\View\FileViewFinder($app['files'], $paths);
  });

  // ...

答案 1 :(得分:0)

我并不完全清楚你在每一步中所期待的是什么。 从MO-KB-001|MO-PR-001|MO-PR-002开始,您需要一张新地图,其中包含:

001 - KB
001 - MO
001 - PR
002 - PR
002 - MO

(即一个001-MO被删除)

您正在寻找的是Apache的SetValuedMap<>