仅在数组的部分区域中搜索的最佳方式

时间:2018-01-30 15:38:15

标签: java arrays

请不要提供实际的代码,只是给我研究如何处理这个问题的项目,或者试着引导我朝着正确的方向前进。

我目前有一项任务,我将文本文件读入String数组,然后使用用户输入的产品编号(pid)通过将每个选项放入另一个数组来配置汽车。

这是我输入名为anyCarConfig []的String数组的文本文件信息。我已经从数组中包含了索引来帮助说明这一点。

[0] - 0001 model1 10000.00

[1] - 0002 model2 20000.00
[2] - 
[3] - Options
[4] - Exterior Color
[5] - 1 Blue 3000.00
[6] - 2 Red 3000.00
[7] - 3 Green 3000.00
[8] - 4 White 3000.00
[9] - 5 Black 3000.00
[10] - 6 Yellow 3000.00
[11] - 7 Orange 3000.00
[12] - 8 Gold 3000.00
[13] - 9 Purple 3000.00
[14] - Interior Color
[15] - 1 Leather-Tan 5000.00
[16] - 2 Leather-Black 5000.00
[17] - 3 Leather-Red 5000.00
[18] - 4 Vinyl-Tan 3000.00
[19] - 5 Vinyl-Black 3000.00
[20] - 6 Vinyl-Red 3000.00
[21] - 7 Cloth-Tan 1000.00
[22] - 8 Cloth-Black 1000.00
[23] - 9 Cloth-Red 1000.00
[24] - Powertrain
[25] - 1 Automatic 7500.00
[26] - 2 Manual 5000.00
[27] - Seat
[28] - 1 Multi-Point 800.00
[29] - 2 Heated 1200.00
[30] - 3 Air 2000.00
[31] - Radio
[32] - 1 AM/FM 500.00
[33] - 2 CD 750.00
[34] - 3 MP3 850.00
[35] - 4 Sirius/XM 900.00
[36] - 5 NAV 3000.00
[37] - Tire
[38] - 1 All-Weather 500.00
[39] - 2 Sports 1100.00
[40] - 3 Premium 1500.00
[41] - Rim
[42] - 1 18 1100.00
[43] - 2 19 1200.00
[44] - 3 20 1300.00
[45] - 4 22 1400.00
[46] - 5 26 2000.00
[47] - Miscellaneous
[48] - 1 MoonRoof 3000.00
[49] - 2 SunRoof 5000.00
[50] - 3 Panaramic 8000.00

然后是关于我如何提出不同选项的描述。

getOptions

类型:公共静态

输入:String pid - 12位数的产品ID编号

返回:返回一个String数组选项

描述:读取pid的最后8个数字,并在anyCarConfig中标识选项,如下所示:

索引1.外部颜色

索引2.内饰颜色

索引3.动力总成

索引4.座位类型

索引5.无线电类型

索引6.轮胎尺寸

索引7.轮辋尺寸

索引8.杂项

如果数字为零,则选项为“无”。每个选项都附加到一个数组,其中选项名称和类型为字符串示例:“外部颜色:白色”一旦定义了所有选项,则返回选项数组。

再次没有为我提供完整的代码,因为我想通过一些反复试验来学习。谢谢。这是我的第一篇文章,所以我希望我能做到这一点。

这是我目前的思考过程。只需要一些指导。

第一步:创建循环以通过pid从第5个字符开始的字符串并在我去的时候存储每个字符。

第二步:从anyCarConfig [4]开始,并从pid String循环的存储字符中添加值,以获得anyCarConfig []的正确索引。

第三步:将anyCarConfig []索引添加到我将返回的getOptions()String数组中。

第四步:从添加到getOptions()的anyCarConfig []开始,在String数组和循环中循环,直到找到anyCarConfig []中以字符而不是数字开头的下一个条目。

第五步:完成pid String循环的下一次迭代

第六步:使用从STEP FOUR中找到的索引作为STEP TWO的开始循环。

重复整个过程,直到我到达pid String的末尾并创建了我的getOptions()String数组。

我知道我在那里错过了解析的东西,删除了anycarConfig []值等我不需要的字符,但我只是想提出一个大概的想法。

1 个答案:

答案 0 :(得分:0)

我个人会首先解析可用的选项,并创建几个对象作为类别。对象具有名称(如外部颜色)和一组选项。最理想的是,您将这些保存在地图中:键是表示选项的数字的索引,当然,值是选项对象本身。 像:

Map<String, ConfigurationOption> options = new HashMap<>();
options.put(1, new ConfigurationOption("Exterior Color", "Blue", "Red", "Green", "White", "Black", "Yellow", "Orange", "Gold", "Purple");

ConfigurationOption有一个像

这样的构造函数
public ConfigurationOption(String name, String ... options) {
  ...
}

当然,您必须使用您解析的数据替换这些硬编码字符串,但是一旦您以这种方式保存它,就可以轻松访问数据,因为您只需使用{ {1}},而index代表产品编号当前数字的索引。