【问题标题】:parse app names and generate string for each type解析应用名称并为每种类型生成字符串
【发布时间】:2019-07-23 16:56:50
【问题描述】:

我有以下应用名称,它们按每种类型分类,如下所示:

#Below is for `app_kop_az1` type
app_kop_az1_hello
app_kop_az1_world
app_kop_az1_laguna
app_kop_az1_jolla

#Below is for `app_kop_az2` type
app_kop_az2_depot
app_kop_az2_friday
app_kop_az2_curad
app_kop_az2_daily

#Below is for `app_toy_az1` type
app_toy_az1_users
app_toy_az1_web
app_toy_az1_metrics
app_toy_az1_advert

#Below is for `app_toy_az2` type
app_toy_az2_exper
app_toy_az2_views
app_toy_az2_access
app_toy_az2_sas

#Below is for `app_wer_az1` type
app_wer_az1_dart
app_wer_az1_logical
app_wer_az1_trojan
app_wer_az1_table

#Below is for `app_wer_az2` type
app_wer_az2_cache
app_wer_az2_desco
app_wer_az2_peeko
app_wer_az2_loopo

所以我总共有 6 种类型,如下所示:

app_kop_az1
app_kop_az2
app_toy_az1
app_toy_az2
app_wer_az1
app_wer_az2

现在我需要以这样的方式存储上述数据,以便最后我可以生成这样的字符串。对于每种类型,我需要制作五行,其中每一行都是其他类型的应用名称(不包括我们正在处理的那个)。

if_process_look app_kop_az1.* then add_pc pc_kop_az2 app_kop_az2_depot app_kop_az2_friday app_kop_az2_curad app_kop_az2_daily
if_process_look app_kop_az1.* then add_pc pc_toy_az1 app_toy_az1_users app_toy_az1_web app_toy_az1_metrics app_toy_az1_advert
if_process_look app_kop_az1.* then add_pc pc_toy_az2 app_toy_az2_exper app_toy_az2_views app_toy_az2_access app_toy_az2_sas
if_process_look app_kop_az1.* then add_pc pc_wer_az1 app_wer_az1_dart app_wer_az1_logical app_wer_az1_trojan app_wer_az1_table
if_process_look app_kop_az1.* then add_pc pc_wer_az2 app_wer_az2_cache app_wer_az2_desco app_wer_az2_peeko app_wer_az2_loopo

if_process_look app_kop_az2.* then add_pc pc_kop_az1 app_kop_az1_hello app_kop_az1_world app_kop_az1_laguna app_kop_az1_jolla  
if_process_look app_kop_az2.* then add_pc pc_toy_az1 app_toy_az1_users app_toy_az1_web app_toy_az1_metrics app_toy_az1_advert
if_process_look app_kop_az2.* then add_pc pc_toy_az2 app_toy_az2_exper app_toy_az2_views app_toy_az2_access app_toy_az2_sas
if_process_look app_kop_az2.* then add_pc pc_wer_az1 app_wer_az1_dart app_wer_az1_logical app_wer_az1_trojan app_wer_az1_table
if_process_look app_kop_az2.* then add_pc pc_wer_az2 app_wer_az2_cache app_wer_az2_desco app_wer_az2_peeko app_wer_az2_loopo

if_process_look app_toy_az1.* then add_pc pc_kop_az1 app_kop_az1_hello app_kop_az1_world app_kop_az1_laguna app_kop_az1_jolla
if_process_look app_toy_az1.* then add_pc pc_kop_az2 app_kop_az2_depot app_kop_az2_friday app_kop_az2_curad app_kop_az2_daily
if_process_look app_toy_az1.* then add_pc pc_toy_az2 app_toy_az2_exper app_toy_az2_views app_toy_az2_access app_toy_az2_sas
if_process_look app_toy_az1.* then add_pc pc_wer_az1 app_wer_az1_dart app_wer_az1_logical app_wer_az1_trojan app_wer_az1_table
if_process_look app_toy_az1.* then add_pc pc_wer_az2 app_wer_az2_cache app_wer_az2_desco app_wer_az2_peeko app_wer_az2_loopo

if_process_look app_toy_az2.* then add_pc pc_kop_az1 app_kop_az1_hello app_kop_az1_world app_kop_az1_laguna app_kop_az1_jolla
if_process_look app_toy_az2.* then add_pc pc_kop_az2 app_kop_az2_depot app_kop_az2_friday app_kop_az2_curad app_kop_az2_daily
if_process_look app_toy_az2.* then add_pc pc_toy_az1 app_toy_az1_users app_toy_az1_web app_toy_az1_metrics app_toy_az1_advert 
if_process_look app_toy_az2.* then add_pc pc_wer_az1 app_wer_az1_dart app_wer_az1_logical app_wer_az1_trojan app_wer_az1_table
if_process_look app_toy_az2.* then add_pc pc_wer_az2 app_wer_az2_cache app_wer_az2_desco app_wer_az2_peeko app_wer_az2_loopo

if_process_look app_wer_az1.* then add_pc pc_kop_az1 app_kop_az1_hello app_kop_az1_world app_kop_az1_laguna app_kop_az1_jolla
if_process_look app_wer_az1.* then add_pc pc_kop_az2 app_kop_az2_depot app_kop_az2_friday app_kop_az2_curad app_kop_az2_daily
if_process_look app_wer_az1.* then add_pc pc_toy_az1 app_toy_az1_users app_toy_az1_web app_toy_az1_metrics app_toy_az1_advert
if_process_look app_wer_az1.* then add_pc pc_toy_az2 app_toy_az2_exper app_toy_az2_views app_toy_az2_access app_toy_az2_sas
if_process_look app_wer_az1.* then add_pc pc_wer_az2 app_wer_az2_cache app_wer_az2_desco app_wer_az2_peeko app_wer_az2_loopo

if_process_look app_wer_az2.* then add_pc pc_kop_az1 app_kop_az1_hello app_kop_az1_world app_kop_az1_laguna app_kop_az1_jolla
if_process_look app_wer_az2.* then add_pc pc_kop_az2 app_kop_az2_depot app_kop_az2_friday app_kop_az2_curad app_kop_az2_daily
if_process_look app_wer_az2.* then add_pc pc_toy_az1 app_toy_az1_users app_toy_az1_web app_toy_az1_metrics app_toy_az1_advert
if_process_look app_wer_az2.* then add_pc pc_toy_az2 app_toy_az2_exper app_toy_az2_views app_toy_az2_access app_toy_az2_sas
if_process_look app_wer_az2.* then add_pc pc_wer_az1 app_wer_az1_dart app_wer_az1_logical app_wer_az1_trojan app_wer_az1_table

我想创建一个Map<String, List<String>>,其中键将是类型名称,值将是该类型的应用程序名称列表,但我很困惑如何使用此映射为每种类型逐行生成上述字符串?像这样使用地图是否正确?

注意:我目前正在使用 Java 7。

【问题讨论】:

  • 展示你到目前为止的尝试
  • 基本上我在讨论时将所有应用程序数据加载到地图中,但从那里我对如何使用该地图逐行生成这些字符串感到困惑。

标签: java data-structures hashmap


【解决方案1】:

您可以尝试使用以下代码结构:

Map<String, List<String>> myMap = ... // create data here

List<String> result = myMap.entrySet()
  .stream()
  .map(e -> {
    String s = "if_process_look " + e.getKey() + ".* ";
    // here you can do internal loop over e.getValue() and add what you want
    //   and concatenate it into one line text
    return s;
  })
  .collect(Collectors.toList());

但还有很多其他方法可以做到这一点。

【讨论】:

  • 我忘了补充,我还在使用 Java 7,所以目前还不能使用 Java 8。同样对于每种类型,当我为其他类型生成 5 行时,我需要确保我不会为我正在处理的那个添加应用程序。
  • 我认为这也行不通,因为对于每个键,在生成字符串时我还需要获取其他键的值
  • 你还在吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
相关资源
最近更新 更多