我需要根据其他集合的内容筛选集合。通常,我会使用该Collection.retainAll()
方法。
不幸的是,我正在处理的域对象的相等性相当不稳定,这取决于比较上下文。因此,我不能依赖equals/hashCode
.
我的下一个反应是使用 custom Comparator
,但我找不到任何支持我的想法的方法。实现功能不是问题,但我想在这里重新发明轮子。
我是否遗漏了 API 中的某些内容?也欢迎其他框架(不太深奥),如 commons。
如果没有,什么优化会使我的简单实现(通过遍历 n^2 中两个集合的所有项目来创建两个集合中的所有对象的列表)成为一个好的实现?
我天真地试图做一个简单的问题:
public void someMethod(){
int x = 0;
...
@SuppressWarnings({"rawtypes", "unchecked"})
x = ((Comparable)lhs).compareTo(rhs);
...
}
Run Code Online (Sandbox Code Playgroud)
这是非法的,必须改写为编译:
public void someMethod(){
...
@SuppressWarnings({"rawtypes", "unchecked"})
int x = ((Comparable)lhs).compareTo(rhs);
...
}
Run Code Online (Sandbox Code Playgroud)
我已经将问题追溯到ElementType:一个语句似乎不是一个有效的程序元素.这是相当混乱的 - 我认为语句类似于所有编程元素的超类型.
是否存在限制有效元素的理论或技术原因?
它可以用不同的方式完成 - 也就是说我可以ElementType
用我自己的班级取代并掌握涟漪变化,我可以诠释任何陈述吗?
我使用免费monad为ETL过程实现了一种简单的语言.当List
用作数据获取和存储的输入和输出时,一切正常.但是,我正在使用异步库并使用Future[List]
常见的进口和定义
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import cats.free.Free
import cats.free.Free._
sealed trait Ops[A]
type OpsF[A] = Free[Ops, A]
Run Code Online (Sandbox Code Playgroud)
与...合作 List
case class Fetch(offset: Int, amount: Int) extends Ops[List[Record]]
case class Store(recs: List[Record]) extends Ops[List[Response]]
def fetch(offset: Int, amount: Int): OpsF[List[Record]] =
liftF[Ops, List[Record]](Fetch(offset, amount))
def store(recs: List[Record]): OpsF[List[Response]] =
liftF[Ops, List[Response]](Store(recs))
def simpleEtl(offset: Int, amount: Int): Free[Ops, List[Response]] =
fetch(offset, amount).flatMap(r => store(r))
Run Code Online (Sandbox Code Playgroud)
没有合作 Future[List]
case class Fetch(offset: Int, amount: Int) extends Ops[Future[List[Record]]]
case class Store(recs: List[Record]) …
Run Code Online (Sandbox Code Playgroud) 我试图找到java.util
包返回支持的集合(和映射)的所有方法的概述.唯一容易找到的是synchronizedXX
和immutableXX
.但还有其他人喜欢subMap()
.是否有更方便的方法来了解util
返回支持集合的所有方法,而不是实际阅读文档?视觉概述可能吗?
http://download.oracle.com/javase/tutorial/collections/implementations/wrapper.html上的包装类教程(已经提出两次作为答案)忽略了NavigableSet/Map接口,因此没有提供返回支持的集合的方法概述
承认,这听起来并不是最佳做法,但让我解释一下.在构建期间,我们需要将构建号和系统版本粘贴到一个类中,该类的唯一目的是包含这些值并使它们可访问.
我们的第一个想法是使用系统属性,但由于部署环境的波动性(另一种说法是"系统管理员正在做奇怪的邪恶的令人毛骨悚然的东西"),我们希望对它们进行硬编码.
基本上我看到了在蚂蚁中实现它的4种可能性:
<replace>
在类中使用令牌
这种方法的问题是文件被更改,所以你必须在编译后用<replaceregexp>
... 替换令牌,因为丑陋,我不想用正则表达式触摸源代码.加上时间依赖性.
复制文件,复制副本,编译副本,删除副本
一个人必须记住序列 - 必须先编译原始类才能被副本覆盖.时间依赖性也很难看.
复制文件,替换原件上的令牌,编译,用副本替换染色的原件
除非嵌入在编译目标中,否则相同的时间依赖性问 这也是丑陋的,因为我们所有的构建文件都使用相同的导入编译目标.
在构建脚本中从头开始创建文件/将文件存储在源路径之外
由于没有时间依赖性,因此对前三个进行了改进,但编译器/ IDE非常不满意,因为它忽略了类.红色标记令人不安地丑陋.
您对替代方案有何看法?
对此有什么最佳做法吗?
我当然希望我错过了一个完美的方法.
谢谢
编辑
我们最终使用清单将构建号和系统版本存储在Implementation-Version
属性中,没有用MyClass.class.getPackage().getImplementationVersion()
.我发现这个解决方案是这个帖子的答案之一,由andersoj发表在评论中
在checkout(http://aima-java.googlecode.com/svn/trunk/
)的中间,客户端停止并显示错误,确切的错误消息显示为:
org.tigris.subversion.javahl.ClientException: RA layer request failed
svn:REPORT of '/svn/svn/vcc/default': Chunk delimiter was invalid
我用Google搜索了错误但无法找到解决方案.我现在唯一知道的是,问题是由不兼容的svn版本引起的.
我从常规的ubuntu repo中使用svn 1.6.12.该错误可以通过多个客户端(使用Eclipse和RabbitVCS进行测试)重现,因为它们都使用相同的后端.
关于如何处理这个问题的任何建议都会在将来避免吗?
谢谢
我已经使用Maven和Spring安装了Eclipse 32位EE但是当我使用Maven创建新项目时,我不断收到以下错误消息:
An internal error occurred during: "Updating Maven Project".
loader constraint violation: loader
(instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader)
previously initiated loading for a different type with name
"org/apache/maven/project/MavenProject"
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
我想从stash中检出一个文件:
git checkout stash@{0} -- some/file
Run Code Online (Sandbox Code Playgroud)
这失败了 fatal: invalid reference: stash@0
看起来花括号被淘汰了,但我不确定罪魁祸首.
存储修订就在那里.git stash list
回报
stash@{0}: WIP on X
stash@{1}: WIP on Y
Run Code Online (Sandbox Code Playgroud)
我在zsh上使用git 1.9.1.
有没有办法防止这种大括号消除?
PersistentView
已在akka 2.4中弃用.文档建议切换到PersistenceQuery
.但是,PersistenceQuery
似乎仅限于事件日志,没有查询快照存储的功能.
从大量事件中恢复状态需要一些时间,因此使用快照的能力对我来说很重要.
折旧是否超过了它的时间?我应该继续工作PersistentView
还是我错过了什么?如何仅使用快照处理快照PersistenceQuery
?
谢谢
java ×5
collections ×2
eclipse ×2
scala ×2
akka ×1
annotations ×1
ant ×1
build ×1
comparator ×1
element ×1
filter ×1
free-monad ×1
git ×1
linux ×1
maven ×1
scala-cats ×1
shell ×1
spring ×1
svn ×1
zsh ×1