假设我想查看流中是否存在对象,如果它不存在,则抛出异常.我可以做的orElseThrow一种方法是使用该方法:
List<String> values = new ArrayList<>();
values.add("one");
//values.add("two"); // exception thrown
values.add("three");
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.orElseThrow(() -> new RuntimeException("not found"));
Run Code Online (Sandbox Code Playgroud)
反过来呢?如果我想在发现任何匹配时抛出异常:
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.ifPresentThrow(() -> new RuntimeException("not found"));
Run Code Online (Sandbox Code Playgroud)
我可以存储Optional,并在isPresent之后进行检查:
Optional<String> two = values.stream()
.filter(s -> s.equals("two"))
.findAny();
if (two.isPresent()) {
throw new RuntimeException("not found");
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这种ifPresentThrow行为?试图以这种方式投掷一个不好的做法?
这似乎是一个非常简单的问题,但我无法弄清楚.
我只是试图断言一个字符串等于"string1"或"string2".
这是我尝试过的,但显然都不起作用.
assertEquals(d.getFormType(), "string1") || assertEquals(d.getFormType(), "string2");
assertEquals(d.getFormType(), "string1" || "string2");
Run Code Online (Sandbox Code Playgroud) 可能重复:
这两个条件之间的差异?
我正在做一些代码清理,NetBeans提出了改变的建议
if(!billAddress1.equals(""))到if (!"".equals(billAddress1)).
两者之间有什么区别,以及使用建议版本优于原始版本的可读性的优势?
首先:s.equals("")和之间有什么区别"".equals(s)?
第二:如果我要执行其中一项功能会怎样?"".substring(1)要么"".charAt(0)
为什么这个代码
"name".equals(person.getName());
Run Code Online (Sandbox Code Playgroud)
比...更好
person.getName().equals("name");
Run Code Online (Sandbox Code Playgroud) private void refineWords() {
for(String word : words){
Log.i("word", word);
if (word == "s" || word == "t" || word == "am" || word == "is" || word == "are" || word == "was" || word == "were" || word == "has" ||
word == "have" || word == "been" || word == "will" || word == "be" || word == "would" || word == "should" || word == "shall" ||
word == "must" || word == "can" || word …Run Code Online (Sandbox Code Playgroud)