Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据收到的代码更新字符串的Java逻辑_Java_Java 8 - Fatal编程技术网

根据收到的代码更新字符串的Java逻辑

根据收到的代码更新字符串的Java逻辑,java,java-8,Java,Java 8,我有一个场景,在这个场景中,我们从一台机器获取需要发送到另一台机器的机器代码,但是通过将其转换为其他机器能够理解的字符串,下面是场景 **if code is 'AGO PRF' then convert to 'AGO.P' if code is 'HUSQ A' then convert to 'HUSQ.A' if code is 'AIK B' then convert to 'AIK.B' if code is 'ALUS WS' then convert to 'ALUS.WS' i

我有一个场景,在这个场景中,我们从一台机器获取需要发送到另一台机器的机器代码,但是通过将其转换为其他机器能够理解的字符串,下面是场景

**if code is 'AGO PRF' then convert to 'AGO.P'
if code is 'HUSQ A' then convert to 'HUSQ.A'
if code is 'AIK B' then convert to 'AIK.B'
if code is 'ALUS WS' then convert to 'ALUS.WS'
if code is 'VST WSA' then convert to 'VST.WSA'
if code is 'SAB CL' then convert to 'SAB.CL'
if code is 'SPR WSB' then convert to 'NSPR.WSB'
if code is 'AXS PRD CL' then change it to 'AXS.PCL'
if code is 'CTEST RT' then convert to 'CTEST.R'
if code is 'ALUS U' then convert to 'ALUS.U'
if code is 'SFUN WI' then convert to 'SFUN.WI'
if code is 'RQI RT WI' then convert to 'RQI.RTWI'
if code is 'ECA WS WI' then change it to 'ECA.WSWI'.** 

我使用一个映射将这些值作为键输入并给出输出。但我想知道是否有更通用的解决方案,如果字符串替换既没有规则也没有规律(我发现没有),那么您需要存储在DB中的映射表或这些常量的静态映射:

  • 我建议使用
    地图
    ,以防出现少量此类地图,并且不会经常更改
  • 我建议从数据库中读取这些数据,以防数量更多。这还允许您在运行时更改映射,而无需构建和重新部署整个应用程序
就数据结构而言,基于字典的方法将是最好的方法-
Map
。它不允许您存储重复的密钥,并且易于用于转换:

List<String> listOfStringsToBeReplaced = loadFromSomewhere();
Map<String, String> map = loadFromDb();

List<String> listWithReplacedStrnigs = listOfStringsToBeReplaced.stream()
    .map(string -> map.getOrDefault(string, string))
    .collect(Collectors.toList());
List listofstringstobereplace=loadfromwhere();
Map Map=loadFromDb();
List listWithReplacedStrnigs=listofstringstobereplace.stream()
.map(string->map.getOrDefault(string,string))
.collect(Collectors.toList());

如果找不到映射,我使用替换值或保持原样。

可能有更通用的解决方案,但这取决于此函数的实际功能。如果您知道这些是您必须处理的唯一输入,那么映射可能是最简单和性能最好的solution@cameron1024-是的,但可能会发生这种情况,这些值将来可能会更改,或者添加了更多值,因此我只是想知道。如果您可以描述转换背后的逻辑(或规则集),请将它们存储在表格中,你可以实现正确的逻辑。否则,没有什么比地图更通用的了。