Tag: 集合

Java集合和垃圾收集器

关于Java Web应用程序性能的一个小问题。 假设我有一个包含10个Rubrique对象的List listRubriques 。 Rubrique包含一个产品List ( List listProducts )和一个客户List ( List listClients )。 如果我这样做,内存中究竟会发生什么: listRubriques.clear(); listRubriques = null; 我的观点是,由于listRubriques为空,此列表之前引用的所有对象(包括listProducts和listClients )将很快被垃圾收集。 但是因为Java中的Collection有点棘手,因为我的应用程序存在相当大的性能问题,我正在问这个问题:) 编辑:我们现在假设我的Client对象包含List 。 因此,我的对象之间有一个循环引用。 如果我的listRubrique设置为null会发生什么? 这一次,我的观点是我的客户端对象将变得“无法访问”并可能造成内存泄漏?

使用预准备语句和变量将Java中的Order By与JDBC驱动程序绑定

我在用着 jdbcTemplate与mySQL数据库建立JDBC连接 准备好的语句尽可能地保护自己免受SQL注入攻击 需要接受来自用户的请求,以对十几个不同列中的任何一列进行数据排序 以下声明 jdbcTemplate.query(“SELECT * FROM TABLE1 ORDER BY ? ?”, colName, sortOrder); 当然这不起作用,因为变量绑定不应该仅为查询中的表达式的参数值指定列名。 那么……人们如何解决这个问题呢? 只是在Java代码中进行排序似乎是一个简单的解决方案,但是因为我得到一个变量字符串供列排序,一个变量告诉我排序顺序….这是一个丑陋的比较器条件数量盖。 这似乎应该是解决它的常见模式的常见问题……

在for循环比较中使用集合大小

Java中的Collections的size()方法是否有编译器优化? 请考虑以下代码: for(int i=0;i<list.size();i++) …some operation….. 每个i都调用size()方法。 找出尺寸并重复使用它不是更好吗? (方法调用有开销)。 final int len = list.size() for(int i=0;i<len;i++) …some operation….. 然而,当我为这两个代码片段计时时,没有显着的时间差异,即使我高达10000000.我在这里错过了一些东西吗? Update1:我知道除非集合发生变化,否则不再计算大小。 但是必须有一些与方法调用相关的开销。 是编译器总是内联这些(见Esko的答案)吗? 更新2:我的好奇心得到了进一步的推动。 从给出的答案中,我看到好的JIT编译器通常会内联这个函数调用。 但他们仍然需要确定该集合是否被修改。 我不接受答案,希望有人能给我指点如何由编译器处理。

Java Collections.sort(节点)使用什么类型?

我认为它是MergeSort,它是O(n log n)。 但是,以下输出不同意: -1,0000000099000391,0000000099000427 1,0000000099000427,0000000099000346 5,0000000099000391,0000000099000346 1,0000000099000427,0000000099000345 5,0000000099000391,0000000099000345 1,0000000099000346,0000000099000345 我按序列号排序了4个节点的节点列表,排序正在进行6次比较。 我很困惑,因为6>(4 log(4))。 谁可以给我解释一下这个? PS这是mergesort,但我仍然不理解我的结果。 谢谢大家的答案。 谢谢汤姆纠正我的数学。

什么是java集合?

我想知道:Java中的集合是什么?

如何使用集合维护插入顺序

我想将一个键值对添加到哈希表(或任何其他集合)中,但必须维护插入顺序。 我怎样才能做到这一点? 就像我将1添加为键“一”作为值,2作为键和“两”作为值。 输出应按以下顺序排序: 1:one 2:two

有没有办法在Java中随机获取HashMap的值?

有没有办法在Java中随机获取HashMap的值?

什么是在java中使用的好的持久性集合框架?

通过持久性集合,我的意思是像clojure中的集合。 例如,我有一个包含元素(a,b,c)的列表。 使用普通列表,如果我添加d,我的原始列表将包含(a,b,c,d)作为其元素。 使用持久列表,当我调用list.add(d)时,我会返回一个新列表,其中包含(a,b,c,d)。 但是,实现尝试尽可能地在列表之间共享元素,因此它比仅返回原始列表的副本更具内存效率。 它还具有不可变的优点(如果我持有对原始列表的引用,那么它将始终返回原始的3个元素)。 这在其他地方解释得更好(例如http://en.wikipedia.org/wiki/Persistent_data_structure )。 无论如何,我的问题是……在java中提供此function的最佳库是什么? 我可以以某种方式使用clojure集合(其他通过直接使用clojure)?

用Java加入字符串集合的首选成语

给定一个字符串集合,如何在不使用外部库的情况下将它们加入普通Java中? 鉴于以下变量: Collection data = Arrays.asList(“Snap”, “Crackle”, “Pop”); String separator = “, “; String joined; // let’s create this, shall we? 这就是我在Guava中的表现 : joined = Joiner.on(separator).join(data); 在Apache Commons / Lang中 : joined = StringUtils.join(data, separator); 但是在简单的Java中,真的没有比这更好的方法吗? StringBuilder sb = new StringBuilder(); for(String item : data){ if(sb.length()>0)sb.append(separator); sb.append(item); } joined = sb.toString();

可以按值的顺序迭代的映射

我需要一个可以按其值的递减顺序迭代的Map。 是否有像Apache Commons或Guava这样的标准库提供这种地图?