如何通过jdk1.6,google或apache commons集合或其他任何方式将O(1)中的两个链接列表与Java连接起来?例如,在jdk中,只有addAll方法是O(n).
我想念的另一个功能是连接两个列表,其中每个列表可以按相反的顺序排列.为了说明这一点,假设两个列表a-> b-> c和e-> f-> g可以合并为
你知道这样的列表实现还是我必须实现自己的链表?了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法).这些功能在我看来非常明显,希望我不会错过一些愚蠢的东西.
正如MicSim指出的那样,在Java中使用Merge两个列表的常量时间是相关的,但不是真正的重复!现在的问题是:
为什么我需要"session.save(user);"这一行 在以下代码段中?我想,通过查找调用,用户已经连接到会话,并且将跟踪和提交更改.你介意给我解释一下细节吗?或者我是否需要特殊配置或其他可以听说此"功能"的情况?
session = createSession();
ta = session.beginTransaction();
assertEquals(1, session.createCriteria(MyUser.class).list().size());
// find one user
MyUser user = session.createCriteria(MyUser.class).uniqueResult();
user.setName("Rocker!");
// ### HERE ###
// WHY this 'save' is necessary!!??
session.save(user);
ta.commit();
ta = session.beginTransaction();
assertEquals(1, session.createCriteria(MyUser.class).list().size());
MyUser user = session.createCriteria(MyUser.class).uniqueResult();
assertEquals("Rocker!", user.getName());
ta.commit();
Run Code Online (Sandbox Code Playgroud)
更新1
同样的问题适用于
更新2
解决问题的方法是:我使用的是guice/warp persist.在某些情况下,我通过@Transactional错误地将代码块绑定到事务:因此事务提交过早提交,因此单独的更改未包含在提交中.多谢你们!因此,如果您使用spring或guice,请务必确保了解您的交易范围...