相关疑难解决方法(0)

java 8 parallel stream问题

    _logger.info("data size : "+saleData.size);

    saleData.parallelStream().forEach(data -> {
                SaleAggrData saleAggrData = new SaleAggrData() {
                    {
                        setCatId(data.getCatId());
                        setRevenue(RoundUpUtil.roundUpDouble(data.getRevenue()));
                        setMargin(RoundUpUtil.roundUpDouble(data.getMargin()));
                        setUnits(data.getUnits());
                        setMarginRate(ComputeUtil.marginRate(data.getRevenue(), data.getMargin()));
                        setOtd(ComputeUtil.OTD(data.getRevenue(), data.getUnits()));
                        setSaleDate(data.getSaleDate());
                        setDiscountDepth(ComputeUtil.discountDepth(data.getRegularPrice(), data.getRevenue()));
                        setTransactions(data.getTransactions());
                        setUpt(ComputeUtil.UPT(data.getUnits(), data.getTransactions()));
                    }
                };
                salesAggrData.addSaleAggrData(saleAggrData);
            });
Run Code Online (Sandbox Code Playgroud)

代码的问题是当我从DB获得响应时,并且在使用并行流进行迭代时,每次数据大小都不同,而使用顺序流时,它工作正常.

我不能使用顺序Stream因为数据很大并且需要时间.

任何领导都会有所帮助.

java parallel-processing java-8 parallel.foreach

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

有没有办法用 Java 中已经包含的值来初始化 SortedMap<Integer, String> ?

我想做这样的事情

SortedMap<Integer, String> stuff = new TreeMap<Integer, String>({1:"a",2:"b"});
Run Code Online (Sandbox Code Playgroud)

很像您在 python 中所做的那样,但在 Java 中是可能的,还是调用 .put() 两次的唯一方法?

java initialization sortedmap data-structures java-8

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

在Java方法中使用大括号会降低性能吗?

似乎双括号初始化增加了开销.

在方法中使用大括号是否也会降低性能?

例如.

public class DoIReducePerformanceToo {

    public void aMethod() {

        {
           // Is it a bad idea to use these?
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

我看了一下Java的语法,似乎这被归类为一个块:

Block: 
    { BlockStatements }

BlockStatements: 
    { BlockStatement }

BlockStatement:
    LocalVariableDeclarationStatement
    ClassOrInterfaceDeclaration
    [Identifier :] Statement
Run Code Online (Sandbox Code Playgroud)

但我不确定语法双括号初始化的位置在哪里.

我的问题:在方法中使用块语句会降低Java中的性能吗?这些块与双支撑初始化具有相同的性质吗?

编辑:

内课即时:

ClassCreatorRest: Arguments [ClassBody]

ClassBody: 
    { { ClassBodyDeclaration } }
Run Code Online (Sandbox Code Playgroud)

java performance block

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

重用Java的闭包/匿名类来获得性能?

当我使用匿名类进行小型操作(如过滤集合)时,会在Java 8中为新的匿名类实例或闭包进行内存分配.

String firstNonEmpty = Lists.find(list, new Predicate<String>(){
     public String apply(String s){ return !s.isEmpty();}
});
Run Code Online (Sandbox Code Playgroud)

我应该在Java 8中重用这样的谓词或闭包吗?始终/循环/无GC方法?

java performance closures anonymous-class java-8

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

Java使用集合中的键初始化映射

在 java 中,您可以根据现有集合的值初始化新地图的键集吗?

就像是:

Set<String> setOfStrings = getSetFromSomeOtherFuntion();

Map<String, Boolean> map = new Hashmap<>(setOfStrings);
Run Code Online (Sandbox Code Playgroud)

如果这是可能的,那么我会假设地图中每个条目的值都是 null,这是可以的,但如果可以设置默认值(例如,如果它是布尔值,则为 false)更好。

java

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