_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因为数据很大并且需要时间.
任何领导都会有所帮助.
我想做这样的事情
SortedMap<Integer, String> stuff = new TreeMap<Integer, String>({1:"a",2:"b"});
Run Code Online (Sandbox Code Playgroud)
很像您在 python 中所做的那样,但在 Java 中是可能的,还是调用 .put() 两次的唯一方法?
似乎双括号初始化增加了开销.
在方法中使用大括号是否也会降低性能?
例如.
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 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 中,您可以根据现有集合的值初始化新地图的键集吗?
就像是:
Set<String> setOfStrings = getSetFromSomeOtherFuntion();
Map<String, Boolean> map = new Hashmap<>(setOfStrings);
Run Code Online (Sandbox Code Playgroud)
如果这是可能的,那么我会假设地图中每个条目的值都是 null,这是可以的,但如果可以设置默认值(例如,如果它是布尔值,则为 false)更好。