我需要能够在树视图(其中有多个选择)中获取所有选定项目的更新列表。
此示例: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)
我不确定如何实现我想要的。任何帮助是极大的赞赏!
我在 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)
后来,我希望做一些操作这个List的Object[]:
[[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[]>.
我怎样才能打印,因此,在它之后,开始对该列表中的每个项目进行操作?
我需要将日期字符串转换为另一种特定格式。
例如:我有一个日期可以作为YYYY-MM-DDorYYYY-MM-DDThh:mm:ss±0000并且我需要将其转换为 something "yyyy-mm-ddTHH:MM:SSZ"。
我使用 Java 8 API 尝试了一些东西,但找不到出路。
我正在尝试从 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 中提到的相同的类型,但它不起作用。请在这方面指导我。
提前致谢。
是否可以通过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) 我正在尝试使用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) 为什么DoubleStream或LongStream没有与以下类似的方法(IntStream中存在):
public static IntStream range(int startInclusive, int endExclusive);
public static IntStream rangeClosed(int startInclusive, int endInclusive);
Run Code Online (Sandbox Code Playgroud)
有什么特别的原因吗?
我有以下收藏:
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。
正确的做法是什么?
考虑下面的这段代码:
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”。.请帮助。
为什么以下不是有效的Lambda表达式?
(Integer i) -> return "Alan" + i;
Run Code Online (Sandbox Code Playgroud)
我希望它是有效的,但实际上是无效的,请解释
java-8 ×10
java ×9
java-stream ×6
arrays ×2
lambda ×2
collect ×1
datetime ×1
getselection ×1
hashmap ×1
java-time ×1
javafx ×1
list ×1
pdfbox ×1
pdfrenderer ×1
treeview ×1