flatten在番石榴中是否有一种方法 - 或者将一种方法转换Iterable<Iterable<T>>为一种方法Iterable<T>?
我有一个Multimap<K, V>[sourceMultimap],我想返回键匹配某个谓词[keyPredicate]的所有值.所以目前我有:
Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values();
Collection<V> retColl = ...;
for (Collection<V> vs : vals) retColl.addAll(vs);
return retColl;
Run Code Online (Sandbox Code Playgroud)
我查看了番石榴文档,但没有跳出来.我只是检查我没有错过任何东西.否则,我会将我的三行提取为一个简短的扁平泛型方法,并保持原样.
在Linux中,假设我有以下文件(例如conf.properties):
HOST_URL=http://$HOSTNAME
STD_CONFIG=http://$HOSTNAME/config
USER_CONFIG=http://$HOSTNAME/config/$unconfigured
Run Code Online (Sandbox Code Playgroud)
我想创建另一个替换了所有环境变量的文件...比如说环境变量$ HOSTNAME是'myhost'并且未设置$ unconfigured,脚本应该产生以下输出:
HOST_URL=http://myhost
STD_CONFIG=http://myhost/config
USER_CONFIG=http://myhost/config/
Run Code Online (Sandbox Code Playgroud)
我认为这可以通过一个简单的单行程来完成,带有某种sed/awk魔法,但我不是专家,而且我的搜索已经静止,所以感谢任何帮助.
编辑:
我应该提一下,该文件可以是任何格式的文本文件,例如xml.我只想用环境中当前设置的任何东西替换任何看起来像env变量的东西.
你如何改变NHibernate中行的子类型?例如,如果我有一个Customer实体和TierOneCustomer的子类,我有一个案例需要将Customer更改为TierOneCustomer,但TierOneCustomer应该具有与原始Customer实体相同的Id(PK).
映射看起来像这样:
<class name="Customer" table="SiteCustomer" discriminator-value="C">
<id name="Id" column="Id" type="Int64">
<generator class="identity" />
</id>
<discriminator column="CustomerType" />
... properties snipped ...
<subclass name="TierOneCustomer" discriminator-value="P">
... more properties ...
</subclass>
</class>
Run Code Online (Sandbox Code Playgroud)
我正在使用每个类的单表层次结构模型,因此使用plain-sql,只需要对鉴别器(CustomerType)进行sql更新,并设置与该类型相关的相应列.我无法在NHibernate中找到解决方案,所以会感激任何指针.
考虑到这个用例,我也在考虑模型是否正确,但在我沿着这条路走下去之前,我想确保首先按照上述方式进行操作.如果没有,我几乎肯定会考虑改变模型.