问题标签 [guava]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 按需将数据从文件加载到集合的最有效方法是什么?
我正在开发一个 java 项目,该项目将允许用户解析可能有数千行的多个文件。解析的信息将存储在不同的对象中,然后将其添加到集合中。
由于 GUI 不需要一次加载所有这些对象并将它们保存在内存中,因此我正在寻找一种从文件加载/卸载数据的有效方法,以便仅在用户请求时将数据加载到集合中.
我现在只是评估选项。我还考虑过这样一种情况,在将数据子集加载到集合中并将其呈现在 GUI 上之后,重新加载先前观察到的数据的最佳方式。重新运行解析器/填充集合/填充 GUI?或者可能找到一种方法将集合保存到内存中,或者序列化/反序列化集合本身?
我知道如果执行某种数据过滤,加载/卸载数据子集会变得很棘手。假设我过滤了 ID,所以我的新子集将包含来自之前分析的两个子集的数据。这没问题,因为我将整个数据的主副本保存在内存中。
我读过 google-collections 在处理大量数据时既好又高效,并提供了简化很多事情的方法,因此这可能提供一种替代方法,让我可以将集合保存在内存中。这只是泛泛而谈。关于使用什么集合的问题是一个单独且复杂的事情。
你知道这类任务的一般建议是什么吗?我想听听你对类似场景做了什么。
如果需要,我可以提供更多细节。
java - 使用带有泛型的 MutableClassToInstanceMap 编译错误
我在 putInstance 方法调用中收到以下编译错误“MutableClassToInstanceMap 类型中的方法 putInstance(Class, T) 不适用于参数 (Class, Number)”。有谁知道我做错了什么?谢谢!
java - Java中的链表有快速的concat方法吗?
如何通过 jdk1.6、google 或 apache commons 集合或其他方式将 O(1) 中的两个链表与 Java 连接起来?例如,在 jdk 中只有 addAll 方法是 O(n)。
我想念的另一个功能是连接两个列表,其中每个列表都可以按相反的顺序排列。为了说明这一点,假设两个列表 a->b->c 和 e->f->g 可以合并到
- a->b->c->e->f->g
- a->b->c->g->f->e
- c->b->a->e->f->g
- c->b->a->g->f->e
你知道这样的列表实现还是我必须实现自己的链表?了解如何调整现有解决方案也很有帮助(例如 jdk LinkedList 只有很多私有方法)。这些功能在我看来非常明显,希望我不会错过一些愚蠢的东西。
正如 MicSim 指出的问题,在 Java 中以恒定时间合并两个列表是相关的,但不是真正的重复!现在的问题是:
- 其他集合库可以吗?
- 如何连接逆?
java - GC 是否保证清除的引用按拓扑顺序排入 ReferenceQueue?
假设有两个对象A
和B
,并且有一个指针A.x --> B
,我们创建,比如说,WeakReference
s 到两个A
和B
,并带有一个关联的ReferenceQueue
。
假设两者都A
变得B
无法访问。直觉B
上不能认为是不可到达A
的。在这种情况下,我们是否能以某种方式保证各个引用将按直观(没有循环时的拓扑)顺序排列ReferenceQueue
?即 ref(A) 在 ref(B) 之前。我不知道——如果 GC 将一堆对象标记为无法访问,然后以不特定的顺序将它们排入队列会怎样?
我正在审查番石榴的Finalizer.java,看到这个片段:
frqReference
是对 used 的 PhantomReference ReferenceQueue
,所以如果这是 GC'ed,没有 Finalizable{Weak, Soft, Phantom}References 可以是活动的,因为它们引用了队列。所以它们必须在队列本身可以被 GC 之前被 GC ——但是,我们是否得到保证这些引用将按ReferenceQueue
它们“收集垃圾”的顺序排入队列(就像他们得到 GC'一个接一个)?该代码暗示存在某种保证,否则理论上未处理的引用可能会保留在队列中。
谢谢
java - Google Collections API 是否具有 Ruby Enumerable#inject 方法的等效项?
我通读了javadoc,找不到任何类似的东西。
java - 如何对谓词进行多线程集合迭代操作?
为了抽象起见,让我们假设我有一个
其中关键是工资门槛。或者对于熟悉谷歌收藏的人来说,它会是 Multimap
我想对每个员工的薪水进行数据库查找,如果低于薪水阈值,则将其从集合中删除。如何以多线程方式执行此操作,最好使用固定线程池执行程序?
同样,对于精通谷歌收藏的人,如果通过 Predicate 完成数据库查找和过滤收藏,我将不胜感激。
collections - 给我一个Multi-set的实际用例
我想知道一些实际用例(如果它们与任何编程语言无关/绑定会更好)。我可以将 Sets、Lists 和 Maps 与实际用例相关联。
例如,如果您想要一本书的词汇表,其中您想要的术语按字母顺序列出并且位置/页码是值,您将使用集合 TreeMap(OrderedMap which is a Map)
不知何故,我无法将 MultiSet 与任何“实用”用例相关联。有人知道任何用途吗?
http://en.wikipedia.org/wiki/Multiset并没有告诉我足够的信息 :)
PS:如果你们认为这应该是社区维基版的,那没关系。我没有这样做的唯一原因是“有一个明确的客观方法可以回答这个问题”。
java - 带有 google-collections 的多个键和值
我想使用 google-collection 将以下文件保存在具有多个键和值的哈希中
前三列是不同的键,最后两个整数是两个不同的值。我已经准备了一个代码,它把这些行分块溢出。
不幸的是,我不知道如何将这些信息保存在 google-collection 中?
先感谢您。
此致,
java - Iterables.find 和 Iterators.find - 不是抛出异常,而是获取 null
我正在使用 google-collections 并试图找到满足 Predicate 的第一个元素,如果不是,则返回“null”。
不幸的是,当没有找到元素时,Iterables.find 和 Iterators.find 会抛出 NoSuchElementException。
现在,我被迫做
我可以用“try/catch”包围并做同样的事情,但对于我的用例,我会遇到很多找不到元素的情况。
有没有更简单的方法来做到这一点?
java - 在 CLASSPATH 中有 Jar 的终端中编译 Java 代码
如何在 CLASSPATH 中使用 google-collections 在终端中使用 javac 编译代码?
尝试在终端中使用 javac 编译的代码示例(在 Eclipse 中工作)
在终端编译
我的类路径