标签: java-8

如何在 JavaFX 的树视图中获取所有选定的树项

我需要能够在树视图(其中有多个选择)中获取所有选定项目的更新列表。

此示例:javafx2 中的树项选择事件

显示如何一次响应/识别一个选定的项目。有没有办法一次获得所有选定的项目?类似于下面假设的非工作代码:

ArrayList<TreeItem> selectedTreeItems = new ArrayList<>();

myTreeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
        @Override
        public void changed(ObservableValue observable, Object oldValue, Object newValue) {
            selectedTreeItems.clear();//reset the list. correct?

            //get a new list of children of the root
            ObservableList objects = myTreeView.getRoot().getChildren();

            //loop to get the selected items.
            for (int i = 0; i < objects.size(); i++) {
                TreeItem object = (TreeItem) objects.get(i);
                if (thisObjectIsSelected(object)) {
                    selectedTreeItems.add(object);
                }
            }


        }
    });

    privatevoid thisObjectIsSelected(TreeItem item){
    //what do I do here?
    }
Run Code Online (Sandbox Code Playgroud)

我不确定如何实现我想要的。任何帮助是极大的赞赏!

treeview javafx getselection java-8

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

理解java中的stream.map

我在 Java 中启动了一些 SQL 查询,它会返回一些如下所示的数据:

[ ID ,Description,WhateverColumn,...,..., ImportantNumber ]

样本:

[ 1 ,"Desc",...,..., 1 ]

[ 1 ,"Desc",...,..., 2 ]

[ 1 ,"Desc",...,..., 3 ]

[ 2 ,"Desc",...,..., 1 ]

[ 3 ,"Desc",...,..., 3 ]

[ 3 ,"Desc",...,..., 5 ]

我正在使用以下列表将其存储在内存中:

List<Object[]> myList = queryLaunched(...);
Run Code Online (Sandbox Code Playgroud)

后来,我希望做一些操作这个ListObject[]

[[1,"Desc",...,...,1],[1,"Desc",...,...,2],...]

我正在尝试通过以下方式使用 stream.map :

myList.stream().map(item -> System.out.println(item.toString()));
Run Code Online (Sandbox Code Playgroud)

但我只是收到这个错误:

类型不匹配:无法转换Stream<Object>void

无论我在 google 的哪个地方看,我都只能找到用 制作的样品List<Class>,而不是用List<Object[]>.

我怎样才能打印,因此,在它之后,开始对该列表中的每个项目进行操作?

java arrays list java-8 java-stream

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

将格式为“yyyy-mm-ddTHH:MM:SS+/-0000”的日期转换为“yyyy-mm-ddTHH:MM:SSZ”

我需要将日期字符串转换为另一种特定格式。

例如:我有一个日期可以作为YYYY-MM-DDorYYYY-MM-DDThh:mm:ss±0000并且我需要将其转换为 something "yyyy-mm-ddTHH:MM:SSZ"

我使用 Java 8 API 尝试了一些东西,但找不到出路。

java datetime java-8 java-time

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

将 List&lt;Object[]&gt; 数组转换为 Map

我正在尝试从 Objects[] 列表中制作一个 Hashmap,但我无法这样做。下面是我写的代码:

List<Object[]> adjustments =  query.getResultList();
Map<Integer, BigDecimal> dpaMap = adjustments.stream().collect(Collectors.toMap(a -> (Integer)a[0], a -> (BigDecimal)a[1]));
Run Code Online (Sandbox Code Playgroud)

我知道只有两个字段从查询中返回,它们具有与 Map 中提到的相同的类型,但它不起作用。请在这方面指导我。

提前致谢。

java lambda hashmap java-8 java-stream

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

是否可以使用Stream API从Map &lt;String,String&gt;中创建String [] []?

是否可以通过Stream API从HashMap中创建String [] []?

我试图得到这样的东西:

Map<String, String> map = new HashMap<>();
    map.put("key1", "value1");
    map.put("key2", "value2");
    map.put("key3", "value3");   => 

 => String[][] 2dArray => [["key1", "value1"], ["key2", "value2"], ["key3", "value3"]]
Run Code Online (Sandbox Code Playgroud)

我已经用简单的java做了同样的事情:

    Set<Map.Entry<String, String>> entrySet = map.entrySet();

    String[][] result = new String[3][2];
    int i = 0;
    for (Map.Entry<String,String> entry : entrySet){
            result[i][0] = entry.getKey();
            result[i][1] = entry.getValue();
            ++i;
    }
Run Code Online (Sandbox Code Playgroud)

java arrays java-8 java-stream

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

如何下载JDK 1.8.0_191

我正在尝试使用PDFRendererfrom PDFBox并且效果很好,但是它给了我一个警告:

Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO: Your current java version is: 1.8.0_171
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO: To get higher rendering speed on old java 1.8 or 9 versions,
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO:   update to the latest 1.8 or 9 version (>= 1.8.0_191 or >= 9.0.4),
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO:   or
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO:   use the option …
Run Code Online (Sandbox Code Playgroud)

java pdfbox pdfrenderer java-8

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

DoubleStream和LongStream的范围方法

为什么DoubleStreamLongStream没有与以下类似的方法(IntStream中存在):

public static IntStream range(int startInclusive, int endExclusive);
public static IntStream rangeClosed(int startInclusive, int endInclusive);
Run Code Online (Sandbox Code Playgroud)

有什么特别的原因吗?

java java-8 java-stream

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

将Set &lt;V&gt;转换为Map &lt;String,Set &lt;String&gt;

我有以下收藏:

Set<Map.Entry<Event, Long>> entries
Run Code Online (Sandbox Code Playgroud)

事件POJO:

public class Event{
    private long epoch; 
    private List<Pair<String, String> eventParams; 
}
Run Code Online (Sandbox Code Playgroud)

我想将条目集合转换为 Map<String, Set<String>>

例:

List<Pair<String, String> eventParams = Arrays.asList(Pair.of("abc","123"), Pair.of("abc","456"));
Run Code Online (Sandbox Code Playgroud)

转换后的集合:

Map<String, Set<String>> converted = ["abc", ["123", "456"]]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下操作:

entries.stream().flatMap(x -> x.getKey().getEventParams().stream())
            .collect(Collectors.groupingBy(Pair::getKey, Collectors.toSet(Pair::getValue)));
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息:无法应用Collector中的toSet

正确的做法是什么?

java collect java-8 java-stream

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

创建Stream后更改Stream的源时Stream的行为

考虑下面的这段代码:

     List<Integer> l=new ArrayList<>();
     l.add(23);l.add(45);l.add(90);

     Stream<Integer> str=l.stream();     // mark A

     l.add(111);
     l=null;

     System.out.println(str.collect(Collectors.toList())); // mark B
Run Code Online (Sandbox Code Playgroud)

输出是:

[23, 45, 90, 111]
Run Code Online (Sandbox Code Playgroud)

我在这里假设,当在标记B处调用终端操作时,将评估标记A的RHS,这意味着已选择了最近的列表(带有元素“ 111”),但问题是为什么我们没有 NullPointerException来到这里。没有得到异常,那么我们也不应该在输出中得到“ 111”。.请帮助。

java java-8 java-stream

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

无效的Lambda表达式

为什么以下不是有效的Lambda表达式?

 (Integer i) -> return "Alan" + i;
Run Code Online (Sandbox Code Playgroud)

我希望它是有效的,但实际上是无效的,请解释

java lambda functional-programming java-8

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