小编roc*_*ker的帖子

Java中的链表有快速连接方法吗?

如何通过jdk1.6,google或apache commons集合或其他任何方式将O(1)中的两个链接列表与Java连接起来?例如,在jdk中,只有addAll方法是O(n).

我想念的另一个功能是连接两个列表,其中每个列表可以按相反的顺序排列.为了说明这一点,假设两个列表a-> b-> c和e-> f-> g可以合并为

  1. A-> B-> C-> E-> F->克
  2. A-> B-> C-> G-> F->电子
  3. C-> B-> A-> E-> F->克
  4. C-> B-> A-> G-> F->电子

你知道这样的列表实现还是我必须实现自己的链表?了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法).这些功能在我看来非常明显,希望我不会错过一些愚蠢的东西.

正如MicSim指出的那样,在Java中使用Merge两个列表的常量时间是相关的,但不是真正的重复!现在的问题是:

  1. 是否有可能与其他集合库?
  2. 如何连续反转?

java collections linked-list apache-commons guava

20
推荐指数
2
解决办法
8654
查看次数

为什么我需要在使用Hibernate查找后明确保存?

为什么我需要"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

同样的问题适用于

  1. session.save(用户);
  2. user.setName( "跷!");
  3. ta.commit();

更新2

解决问题的方法是:我使用的是guice/warp persist.在某些情况下,我通过@Transactional错误地将代码块绑定到事务:因此事务提交过早提交,因此单独的更改未包含在提交中.多谢你们!因此,如果您使用spring或guice,请务必确保了解您的交易范围...

java hibernate

5
推荐指数
1
解决办法
1532
查看次数