我正在尝试学习如何Optional在Java中使用- 但这似乎不正确我在做什么.
User user = null;
public AuthCheck(User user) throws Exception {
if (user == null) {
throw new Exception("No user!");
}
if (!(user.getStuff() != null && !user.getStuff().isEmpty())) {
throw new Exception("User has no stuff");
}
this.user = user;
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试使用Optional以下方法转换它:
Optional<UserOptional> user;
public AuthCheckOptional(Optional<UserOptional> user) throws Exception {
user.orElseThrow(() -> new Exception("No User!"));
user.map(UserOptional::getStuff)
.orElseThrow(() -> new Exception("User has no stuff"));
this.user = user;
}
Run Code Online (Sandbox Code Playgroud)
我想我不需要两次单独检查.另外我相信我已经改变了逻辑,因为IsEmpty()没有发生.
String ip="2011-05-01T06:47:35.422-05:00";
ZonedDateTime mzt = ZonedDateTime.parse(ip).toInstant().atZone(ZoneOffset.UTC);
System.out.println(mzt);
System.out.println("-----");
String ip2="2011-05-01T00:00:00.000-05:00";
ZonedDateTime mzt2 = ZonedDateTime.parse(ip2).toInstant().atZone(ZoneOffset.UTC);
System.out.println(mzt2);
Run Code Online (Sandbox Code Playgroud)
输出:
2011-05-01T11:47:35.422Z
-----
2011-05-01T05:00Z
Run Code Online (Sandbox Code Playgroud)
为什么在案例2中更改日期格式?由于这个原因,我收到SQLServer数据库错误.
我有以下if-else块,我想知道是否有更优雅的方式可以编写此代码...我使用的是Java 8
if(valueString != null) {
return valueString;
}
else if(valueInt != null) {
return String.valueOf(valueInt);
}
else if(valueFloat != null) {
return String.valueOf(valueFloat);
}
else if(valueDate != null){
return String.valueOf(valueDate);
}
else if(valueBit != null) {
return String.valueOf(valueBit);
}
else {
return null;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从源代码构建Elasticsearch.我今天从GitHub回购克隆,我按照" 从源头构建 "中的说明进行操作.
运行./gradlew assemble会产生以下错误:
...
> Configure project :benchmarks
=======================================
Elasticsearch Build Hamster says Hello!
=======================================
Gradle Version : 4.7
OS Info : Linux 4.4.0-112-generic (amd64)
JDK Version : Oracle Corporation 1.8.0_161 [Java HotSpot(TM) 64-Bit Server VM 25.161-b12]
JAVA_HOME : /usr/lib/jvm/java-8-oracle
Random Testing Seed : 5554B47DBBCF3CFB
Project evaluation failed including an error in afterEvaluate {}. Run with --stacktrace for details of the afterEvaluate {} error.
FAILURE: Build failed with an exception.
* Where:
Build file …Run Code Online (Sandbox Code Playgroud) 我正在努力从StringBuilder中删除一些字符.该方法工作正常.但是,我希望通过Java-8流API实现相同的功能.目前的代码很冗长.有没有办法通过Java 8流API重构第二个方法removeCarryReturnsCharacters()?
private static StringBuilder readEntireFileUsingStream(Path filePath) throws IOException {
StringBuilder data = new StringBuilder(String.valueOf(Files.readAllLines(filePath, StandardCharsets.ISO_8859_1)));
return removeCarryReturnsCharacters(data);
}
private static StringBuilder removeCarryReturnsCharacters(StringBuilder fileData){
int endIndex = 1012;
String needToRemove = "";
long totDataChunkCount = fileData.length()/1014;
long delCounter = 1;
try{
while (delCounter < totDataChunkCount) {
needToRemove = fileData.substring(endIndex, endIndex + 2);
if (needToRemove.equals("^^")) {
fileData.delete(endIndex, endIndex + 2);
}
endIndex += 1012;
delCounter++;
}
}catch(StringIndexOutOfBoundsException exp){
throw exp;
}
return fileData;
}
Run Code Online (Sandbox Code Playgroud) 当我尝试从列表中删除元素时removeIf(),它正在抛出UnsupportedOperationException
public class T {
public static void main(String[] args) {
String[] arr = new String[] { "1", "2", "3" };
List<String> stringList = Arrays.asList(arr);
stringList.removeIf((String string) -> string.equals("2"));
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么会发生这种情况,我该如何纠正这个问题?
考虑以下对象:
class Interval {
final String name;
final Date start;
final Date end;
final int intervalId;
}
Run Code Online (Sandbox Code Playgroud)
我收到了一份间隔清单.我需要检查它等于给定的地图.例如:
boolean checkEqual(List<Interval> intervals, Map<Date, Date> startEnd) {
}
Run Code Online (Sandbox Code Playgroud)
即
boolean checkEqual(List<Interval> intervals, Map<Date, Date> startEnd) {
Map<Date, Date> map = intervals.streams.filter ?? is there a way to do it ?
return map.equals(startEnd)
}
Run Code Online (Sandbox Code Playgroud)
怎么做 ?
如何编写代码JAVA8为每个循环跳过第一次迭代.我已经阅读了Stack Overflow中的先前答案.但所有都是Java <8版本.
cars.forEach(car->{
//Skip first then do some thing
})
Run Code Online (Sandbox Code Playgroud) 在Java 8项目中,我可以这样解析日期:
LocalDate.parse(
newDateString,
DateTimeFormatter.ofPattern(expectedDateFormat)
)
.format(
DateTimeFormatter.ofPattern(expectedDBDateFormat)
);
Run Code Online (Sandbox Code Playgroud)
我的问题是,我有一个Java 6的项目,LocalDate并DateTimeFormatter没有为Java 6的定义.
如何在Java 6项目中解析日期?
我正在尝试将字符串日期时间解析为JavaLocalDateTime或Date在 Java 中。我可能得到的输入,比如12/21/2020 12:12:12 PM,1/12/2020 2:6:8 PM,10/2/2020 10:50:8 AM
我尝试在DateTimeFormatter或下DateTimeFormatBuilder可以使用不同类型的模式。蛮力方法我在哪里 硬编码不同的模式组合。这是从链接复制的代码:
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
class Main {
public static void main(String[] args) {
// many combinations
final String DATE_FORMATS = "[MM/dd/yyyy HH:mm:ss a][M/dd/yyyy H:mm:ss a]";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DATE_FORMATS);
System.out.println(dateFormatter.parse("12/21/2020 11:12:12 AM"));
System.out.println(dateFormatter.parse("1/12/2020 2:54:55 AM"));
}
}
Run Code Online (Sandbox Code Playgroud)
有没有其他解决方案,因为我无法控制输入?我可以使用哪个单一模式而Formatter不是多个组合?或者在解析之前接收后修改输入更好吗?