我有一个对象列表,List<Field> fieldList
和字符串 List<String> fieldNameList
的列表。
fieldList
中的每个 Field 对象由字符串 filedName
组成和各种属性。
迭代 fieldList
的最佳方法是什么?并按 fieldNameList
的顺序访问它们的属性?
例如,
fieldList
:[name, color, size]
包含:
[field1, red, 10] [field2, yellow, 8] [filed3, green, 9] [field4, blue, 10]
还有fieldNameList
包含:
[field2, field3, field1, field4]
我想按照fieldNameList的顺序访问fieldList,即 颜色=黄、绿、红、蓝
我知道的一种方法是迭代 fieldList
首先创建一个 HashMap<String, Field> nameFieldMap
然后迭代fieldNameList
并通过 fieldNames
访问所需的字段属性为了。
但是,这涉及 2 次迭代,因此花费的时间将为 2n。
Is there a better way to do this? Can this be achieved in one iteration?
最佳答案
如果 fieldNameList
和 fieldList
具有相同(或相似)的大小,则根本无法获得比 2n 更好的值;每个列表一个 n。您只需为每个列表支付 O(n) 即可检查内容...除非至少其中一个列表有一些有趣的特征。
关于Java:按照另一个列表中对象的顺序迭代一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951181/