作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含分割的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=打印机等。
如何提取元素中的数字(例如 001、002)并将其添加到 Map
中以用作 Key
和 Values
是相应的设备 key ,例如MO、PR 等确保键和键值不重复?然后,这将能够循环遍历 map 并处理每个设备的键集...
public interface Device {
void create();
void fix();
}
public Printer implements Device {
public void create() {
//logic to create
}
当我查找要针对特定 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/
我在 Java 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!