我在Java中有这个代码:
mViewModel.getSetupData().observe(this, this::updateTime);
Run Code Online (Sandbox Code Playgroud)
的注册方法接受一个参数。将此代码转换为 Kotlin 时,以下内容不起作用:
mViewModel?.getSetupData()?.observe(this, ::updateTime)
Run Code Online (Sandbox Code Playgroud)
IDE (android studio) 抱怨
类型不匹配。要求:观察者。找到 KFunction1。
有什么线索吗?
java-8 kotlin android-studio method-reference android-livedata
我有两个组合框示例组合框 a 和 b。当comboBox an 为空并且从comboBox a 中选择特定值时,我想禁用comboBox b。
comboboxb.disableProperty().bind(
JavaFxObserver.toBinding(
JavaFxObservable.nullableValuesOf(comboboxa.getSelectionModel().selectedItemProperty())
.map(test -> !comboboxaEnum.isPresent() || comboboxaEnum.equals(comboboxaEnum.XX) ))
);
Run Code Online (Sandbox Code Playgroud)
只有在 comboBox 为空时才禁用。
我想在 java 中的字符串列表中计算单个单词的出现次数。看似这个任务很简单,但我遇到了一个问题,单词以大写字母开头或包含,或.在单词末尾。我的方法看起来像:
public static Long countWordOccurence(List<String> wordList, String word) {
return wordList.stream()
.filter(s -> word.contains(s))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.values()
.stream()
.findFirst()
.orElse((long) -1);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在正常情况下工作正常,但问题发生在像字符串末尾的昏迷Test,或以大写字母开头的字符串这样的角落情况下。
我正在拆分我的字符串列表,如:
Arrays.asList(TEXT_TO_PARSE.split(" "));
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我会很感激避免额外的依赖,但如果有必要,我不会鄙视。
我将不胜感激关于如何在流中修复我的过滤器子句以正确计算字符串的建议。
我在 Java 中有一个类 A,在 Kotlin 中有一个接口 B。
// kotlin
interface B {
fun optional()
}
Run Code Online (Sandbox Code Playgroud)
// java
class A implements B {
}
Run Code Online (Sandbox Code Playgroud)
我想在 Kotlin 接口 (B) 中编写默认方法(Java 8 特性),并想在类 A 中实现它,我该如何实现?
提前致谢。
如果我在流上执行多个操作,它们是如何在内部计算的。
List<Integer> ee = new ArrayList<Integer>();
Function<? super Integer, ? extends Integer> f1 = x -> x * 2;
Function<? super Integer, ? extends Integer> f2 = x -> x * x;
Function<? super Integer, ? extends Integer> f3 = x -> x / 2;
ee.stream().map(f1.compose(f2.andThen(f3))).collect(Collectors.toList());
ee.stream().map(f1).map(f2).map(f3).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
编辑问题以添加多个地图操作。在多个地图函数应用的情况下如何计算地图函数。在谈论非并行流时,元素的计算顺序是否仅取决于输入集合的类型(即对于列表、linkedHashmap、sortedset 和无序对于 hashSet 等)。另外,我能否对流的内部工作有更多的了解,以便更好地决定何时不建议使用流以及何时建议使用最多。(集合大小、序列的性质等)
是否有更简单的方法来使用 Java 8 实现以下代码?
Enumeration headerNames = request.getHeaderNames();
List<Entry<String, String>> headers = new ArrayList<>();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
headers
.add(Map.entry(headerName, request.getHeader(headerName)));
}
Run Code Online (Sandbox Code Playgroud)
是的,请求是 HttpServletRequest
我正在尝试获取类型A -> A为 的地图,并将其分组为A to List<A>. (也颠倒了键值关系,但我认为这不一定相关)。
这就是我现在所拥有的:
private static Map<Thing, List<Thing>> consolidateMap(Map<Thing, Thing> releasedToDraft) {
// Map each draft Thing back to the list of released Things (embedded in entries)
Map<Thing, List<Map.Entry<Thing, Thing>>> draftToEntry = releasedToDraft.entrySet().stream()
.collect(groupingBy(
Map.Entry::getValue,
toList()
));
// Get us back to the map we want (Thing to list of Things)
return draftToEntry.entrySet().stream()
.collect(toMap(
Map.Entry::getKey,
ThingReleaseUtil::entriesToThings
));
}
private static List<Thing> entriesToThings(Map.Entry<Thing, List<Map.Entry<Thing, Thing>>> entry) {
return entry.getValue().stream()
.map(Map.Entry::getKey)
.collect(toList());
}
Run Code Online (Sandbox Code Playgroud)
我想在单个语句中执行此操作,并且我觉得必须可以将 …
以下代码编译得非常好。
据我了解,这不应该是因为Class C实施interface I
因为抽象类也无法编译。
interface I {
public String toString();
}
class C implements I {
}
Run Code Online (Sandbox Code Playgroud)
抽象类未编译
abstract class MyAbstractClass {
public abstract String toString();
}
public class MyClass extends MyAbstractClass {
}
Run Code Online (Sandbox Code Playgroud)
请帮助我理解这种行为为什么抽象没有编译而接口呢?
我有一个具有这种结构的 Firebase 数据库
{
"foo" : {
"data" : {
"2019-12-01" : [ {
"item1" : 8,
"item2" : 16,
"name" : "user1"
}, {
"item1" : 9,
"item2" : 18,
"name" : "user2"
} ],
"2019-12-02" : [ {
"item1" : 2,
"item2" : 26,
"name" : "user1"
}, {
"item1" : 6,
"item2" : 6,
"name" : "user2"
} ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在recyclerviewer以一种非常简单的方式填写主要活动:
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习 Java 8。有没有办法将下面的方法转换为 Java 8 Streams、filter 和 forEach。如果是这样,如何?
String[] couponList = coupons.split(",");
for(String coupon:couponList) {
singleCouponUsageCount = getSingleCouponUsageCount(coupon);
if(singleCouponUsageCount >= totalUsageCount)
return 0;
}
return 1;
//
for(String coupon:couponList) {
singleCouponUsageCount = getSingleCouponUsageCount(coupon);
if(singleCouponUsageCount >= totalUsageCount)
return singleCouponUsageCount;
}
return singleCouponUsageCount;
Run Code Online (Sandbox Code Playgroud)