小编Mar*_*aun的帖子

为什么Java在Map中没有putIfAbsent(key,supplier)方法?

我最近发现自己想在java.util.Map中使用一个版本的putIfAbsent(...),你可以提供某种工厂方法,以便在它尚未存在的情况下实例化一个Object.这将简化许多代码.

这是我修改过的界面:

import java.util.Map;
import java.util.function.Supplier;

/**
 * Extension of the Map Interface for a different approach on having putIfAbsent
 * 
 * @author Martin Braun
 */
public interface SupplierMap<K, V> extends Map<K, V> {

    public default V putIfAbsent(K key, Supplier<V> supplier) {
        V value = this.get(key);
        if(value == null) {
            this.put(key, value = supplier.get());
        }
        return value;
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:还有另一种(更简单的)方法吗?或者我只是忽略了Java API中的某些内容?

java collections map

19
推荐指数
1
解决办法
5556
查看次数

实体图上的JPA更改事件[EclipseLink]

我可以通过仅使用JPA以某种方式跟踪整个Entity-Graphs状态吗?

考虑使用具有两个或三个类的层次结构,其中至少有一个Collection.

通过使用JPA @Post ... Annotations我只能跟踪实际的实体,而不是它的子项和/或集合,因为它几乎只是数据库事件包装.

我知道Hibernate可以做到这一点,但我不想依赖JPA的实现来做到这一点.

如果至少有一种方法可以使用EclipseLink,我会很高兴.

java hibernate jpa

7
推荐指数
1
解决办法
313
查看次数

Solr Performance为许多文档查询

我希望Solr始终检索搜索找到的所有文档(我知道Solr不是为此而构建的,但无论如何)我目前正在使用以下代码执行此操作:

    ...
    List<Article> ret = new ArrayList<Article>();
    QueryResponse response = solr.query(query);
    int offset = 0;
    int totalResults = (int) response.getResults().getNumFound();
    List<Article> ret = new ArrayList<Article>((int) totalResults);
    query.setRows(FETCH_SIZE);
    while(offset < totalResults) {
        //requires an int? wtf?
        query.setStart((int) offset);
        int left = totalResults - offset;
        if(left < FETCH_SIZE) {
            query.setRows(left);
        }
        response = solr.query(query);
        List<Article> current = response.getBeans(Article.class);
        offset += current.size();
        ret.addAll(current);
    }
   ...
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是如果查询超过1000次点击则相当慢(我在这里读到了这个.这是由Solr引起的,因为我每次都设置启动 - 由于某种原因 - 需要一些时间).什么是更好(和更快)的方法来做到这一点?

java lucene performance solr

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

标签 统计

java ×3

collections ×1

hibernate ×1

jpa ×1

lucene ×1

map ×1

performance ×1

solr ×1