gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:45:10 25 4
gpt4 key购买 nike

我有一个包含分割的String部分的数组:

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

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

part 如下所示:

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

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

  1. 如何提取元素中的数字(例如 001、002)并将其添加到 Map 中以用作 KeyValues 是相应的设备 key ,例如MO、PR 等确保键和键值不重复?然后,这将能够循环遍历 map 并处理每个设备的键集...

     public interface Device {
    void create();

    void fix();
    }

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

最佳答案

import java.util.List;
import java.util.*;
import java.lang.*;
import java.io.*;

/**
* Created by bhanu on 30/6/16.
*/
class Ideone {

/* package whatever; // don't place package name! */

public static void main (String[] args)
{
Map<String, List<String>> deviceByForename = new HashMap<String, List<String>>();
Map<String, List<Device>> deviceMapped = new HashMap<String, List<Device>>();
String[] parts = {"MO, KB, 001","MO, PR, 001","MO, PR, 002"};

String[] devicesNames = null;
for(String eachPart :parts ){
List<String> devicename = new ArrayList<String>();
devicesNames = eachPart.split(",");
if(deviceByForename.containsKey(devicesNames[2].trim()))
{
devicename = deviceByForename.get(devicesNames[2].trim());
if(!devicename.contains(devicesNames[0])){
devicename.add(devicesNames[0]);
}
if(!devicename.contains(devicesNames[1].trim())){
devicename.add(devicesNames[1].trim());
}
}else {
devicename.add(devicesNames[0]);
devicename.add(devicesNames[1].trim());
deviceByForename.put(devicesNames[2].trim(),devicename);
}

}
Iterator it = deviceByForename.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
List<String> devicename = (List<String>)pair.getValue();
List<Device> mappedDevices = new ArrayList<Device>();

for(String device:devicename){

switch ( device){
case "PR":
Printer print = new Printer();
mappedDevices.add(print);
break;

case "MO":
Mouse mouse = new Mouse();
mappedDevices.add(mouse);
break;
};
}
deviceMapped.put((String)pair.getKey(),mappedDevices);
}
System.out.println(deviceMapped);
}

}
interface Device {
void create();

void fix();
}

class Printer implements Device {
public void create() {
//logic to create
}
public void fix() {
//logic to create
}
}
class Mouse implements Device {
public void create() {
//logic to create
}
public void fix() {
//logic to create
}
}

关于java - 将数组中的字符串映射到相应的实现类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com