小编Cil*_*lla的帖子

Difference between Java8 thenCompose and thenComposeAsync

Given this piece of code:

public List<String> findPrices(String product){
    List<CompletableFuture<String>> priceFutures =
    shops.stream()
         .map(shop -> CompletableFuture.supplyAsync(
                () -> shop.getPrice(product), executor))
         .map(future -> future.thenApply(Quote::parse))
         .map(future -> future.thenCompose(quote ->
                CompletableFuture.supplyAsync(
                        () -> Discount.applyDiscount(quote), executor
                )))
         .collect(toList());

    return priceFutures.stream()
                       .map(CompletableFuture::join)
                       .collect(toList());
}
Run Code Online (Sandbox Code Playgroud)

This part of it:

.map(future -> future.thenCompose(quote ->
                CompletableFuture.supplyAsync(
                        () -> Discount.applyDiscount(quote), executor
                )))
Run Code Online (Sandbox Code Playgroud)

Could it be rewrite as:

.map(future -> 
    future.thenComposeAsync(quote -> Discount.applyDiscount(quote), executor))
Run Code Online (Sandbox Code Playgroud)

I took this code from an example of a book and says the two solutions are …

java java-8 completable-future

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

运行深度优先搜索时的StackOverflowError(无向图)

我有一个DFS访问递归方​​法,有时会抛出StackOverflowError.由于图形的大小很大(大约20000个顶点),递归调用很多,所以我尝试使用-Xss10M运行,一切正常.我只想理解为什么在方法的开头添加System.out.println,即使没有-Xss10M,该方法也不会抛出任何StackOverflowError.这怎么可能?

这是DFS访问方法:

private int dfsVisit(Vertex<T> v, int time){
  // System.out.println("Hello");
  Vertex<T> n;
  time++;
  v.d = time;
  v.color = Vertex.Color.GRAY;
  for (Map.Entry<Vertex<T>, Float> a : v.neighbours.entrySet()){
     n = a.getKey();
     if(n.color == Vertex.Color.WHITE){
        n.previous = v;
        time = dfsVisit(n, time);
     }
  }
  v.color = Vertex.Color.BLACK;
  time++;
  v.f = time;

  return time;
}
Run Code Online (Sandbox Code Playgroud)

这是完整的代码

import java.io.*;
import java.util.*;

class Graph<T> {
   private final Map<T, Vertex<T>> graph; 

   public static class Edge<T>{
      public final T v1, v2;
      public final float dist;

      public Edge(T v1, T …
Run Code Online (Sandbox Code Playgroud)

java graph

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

swing - GridBagLayout中的JLabel,带有长文本

我正在尝试设计一个弹出窗口来通知接收新的电子邮件.这是代码:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 *
 * @author luca
 */
public class Popup extends JDialog {


    public Popup() {
        super.setSize(260, 100);

        this.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.insets = new Insets(5, 5, 5, 5);


        JLabel header = new JLabel("Hai ricevuto una nuova email");
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        gbc.anchor = GridBagConstraints.WEST;
        add(header, gbc);

        JLabel mittente = …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel layout-manager gridbaglayout

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

Android MVVM-数据更改时更新ViewModel

我正在使用MVVM带有模式的应用程序RxJava。架构如下: 在此处输入图片说明

这是我第一次使用此模式,并且我不确定在由应用程序的另一个组件进行的数据更改中更新ViewModel(因此相应的View)的最佳方法。

例如:假设我们有一个Activity显示我关注的用户列表(如社交应用程序),则从该列表中选择一个用户,然后在另一个用户中打开其个人资料Activity。现在,从第二秒开始,Activity我决定取消关注该用户,当我按下后退按钮返回到第一秒时,我Activity希望列表自动更新(删除相应的用户,显然无需重新下载所有数据)。

问题在于两者Activity有两个不同ViewModel。我如何使第二个所做的更改Activity影响ViewModel第一个所做的更改?Repository通知第一个Activity更改是否是的责任?

  • 我宁愿不使用 startActivityForResult
  • 我宁愿不注入ViewModel第一Activity在第二个

非常感谢!

android mvvm kotlin rx-java

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