名单<地图<String,字符串>> VS列表<OBJECT>

怀疑论者文人:

什么是使用之间的区别List<Map<String, String>>VS List<Object>在使用和性能方面。假设我要创建只有3种类型的键值对的地图列表,我可以代替创建只有3个属性的对象,使对象的列表。

这里的问题是,人们应该考虑脚本可以使用这两种方式的呢?

GhostCat致敬莫妮卡C.:

让我们先澄清一下,我们所谈论的:它是

List<Map<String, String>> 

List<Foo>

其中,foo对象具有编号“属性”,即将与选择一个被存储在地图(如密钥值对)的。

在这种情况下,你绝对去选择2很简单,因为良好的面向对象是有关创建有用的抽象,又名车型含义:当你有一个属性属于一起,然后用一个类来包装他们周围是要走的自然方式。

这让你对性能略有优势(因为你避免地图访问),但核心的东西就是:它可以让你写的编译时检查代码。你看:

int foo = list.get(0).map.get("key");

可以失败在运行时 -你不知道,如果地图包含的关键,如果这是一个整数。

int foo = list.get(0).getFoo(); // resp. ...get(0).fieldName 

可以通过编译器进行检查!(是的,那些get()方法调用仍然可以在运行时失败,但是这是你没有得到周围反正)

除此之外:不担心有关性能在这个层面上:首先,你要了解什么真正编写Java代码时,会影响你的表现。因为你绝对要避免“这段代码是丑陋的,但可能会提供更好的性能”的想法潜入你的设计。专注于编写干净的代码,得到一种直接的方式来完成工作。不要从不更少的表现,因为你的代码假设它是速度更快。当你有一个性能问题-分析代码,找出根本原因并解决这个问题。

但不允许过早优化的思想来影响质量的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎么能减少基于字符串的Java中的其他名单上我的结构列表?

Collectors.groupby的地图<字符串,列表<字符串>

如何创建列表<T>地图<字符串,T>而不是地图<字符串,列表<T >>?

Java的8名单<地图<字符串,对象>>到列表<地图<字符串,对象>>的键组和值数

反转地图与列表值地图<钥匙,名单<值>>地图<值,重点>在Java中8

Java的8流,对象的转换列表地图<字符串,将<字符串>>

如何名单<人>转换地图<字符串,列表<双>>,而不是地图<字符串,列表<人>>?

Java的8炼油LAMBDA地图<字符串,列表<字符串>>将字符串地图关键要求

获得“类型不匹配:不能从转换的ArrayList <HashMap的<字符串,字符串>>将列表<地图<String,字符串>>”在实例映射列表

地图<字符串,地图<字符串,租车>>到列表<汽车>使用Java 8

如何流式地图<路径,名单<路径>>到一个List <String>的包含的绝对路径字符串?

Java流列表<地图<字符串,双>>基于字符串需要平均

Java流:地图<枚举,名单<A >>到列表<B>

Java流通过分组名单<地图<字符串,对象>>地图<整数,是List <Integer >>

构建最大值的列表,从嵌套拉姆达嵌套的地图内的一组名单

如何使一个地图的属性,它是在另一个列表中的新名单

Java类扩展的HashMap <字符串,地图<字符串,列表<字符串>>重写方法放不工作

名单<String>的获取从另一个列表中有字符串之一结尾的所有元素的数

从列表频率计数唯一值<名单<字符串>>

如何收集地图<字符串,列表<字符串>>将acheve该列表排序?

地图字符串数组列表获取键和值

如何转换列表<V>进入地图<K,名单<V >>,与Java 8流和自定义列表和地图供应商?

如何转换单<名单<字符串>>助焊剂<String>的

拼合一个地图<整数,列表<字符串>>地图<字符串,整数>用流和lambda

将字符串转换为地图列表

在Scala中反转地图(字符串->列表)

如果列表中包含“黑名单”中的子字符串,则从列表中删除该项目

减少地图(地图(地图(列表(字符串))))地形

Dart 解析字符串包含地图列表