我正在尝试将巴西本地日期转换为 UTC 格式。我已经开发了我的解决方案,但我相信它可以改进。我一直在寻找其他问题,但没有成功。
我的问题是,当我使用以下方法处理Date对象时:
Instant endDateTime = questionDate.toInstant();
Run Code Online (Sandbox Code Playgroud)
我收到一个 UTC 日期,"2017-11-16T00:00:00Z"但这应该是巴西本地日期(不正确,因为它有尾随"Z"),当我尝试转换为 UTC 时,我收到相同的输出。
另一方面,如果我使用ZoneDateTimeclass 并使用LocalDateTimeobject构建日期,我会在输出中丢失秒数:"2017-11-16T02:00Z". 当我使用时会发生这种情况:
LocalTime.of(hour, minutes, seconds);
Run Code Online (Sandbox Code Playgroud)
我搜索LocalTime课堂,我认为这是因为分钟或秒,0但我不确定。
OffsetDateTime类"2017-11-16""2017-11-16T02:00:00Z"private static OffsetDateTime processDate(Date questionDate) {
Instant endDateTime = questionDate.toInstant();
ZoneId zoneId = ZoneId.of(ZONEID);
String [] date = endDateTime.toString().split("T");
LocalDateTime localDateTime = convertLocalTimeToUtc(date);
ZonedDateTime zonedDateTime = …Run Code Online (Sandbox Code Playgroud) 我想HashMap使用来自ArrayListJava输入的 lambda 表达式创建三层。三层是年、月和周,这是我的前两层代码。但是,在第二层我收到一个错误(第一层工作正常)。
public HashMap<Integer,HashMap<Integer,HashMap<Integer,AbcDetails>>> createHashMapOfTimePeriod(List<AbcDetails> abcDetails){
Map<Integer,List<AbcDetails>>result1=abcDetails.stream().collect(Collectors.groupingBy(AbcDetails::getYear));
Map<Integer,Map<Integer,AbcDetails>>reult2=result1.entrySet().stream().collect(Collectors.groupingBy(e -> (e.getValue().stream().collect(Collectors.groupingBy(AbcDetails::getWeek)))));
return null;
}
Run Code Online (Sandbox Code Playgroud) 我正在Stream对一组Integers运行操作。
然后我创建了一个Cell对象来进行一些操作并应用一个过滤器,
我想创建一个只有有效s的Integerto的映射。CellCell
沿着这条线的东西:
List<Integer> type = new ArrayList<>();
Map<Integer, Cell> map =
list.stream()
.map(x -> new Cell(x+1, x+2)) // Some kind of Manipulations
.filter(cell->isNewCellValid(cell)) // filter some
.collect(Collectors.toMap(....));
Run Code Online (Sandbox Code Playgroud)
是否可以沿流操作使用原始流对象?
我有一个下游服务,我想将其 bean 映射到我的 bean。但是使用mapstruct似乎有问题。
来自下游服务的 Pojo(我无法更改其定义)
@ToString
@Getter
@Setter
@Accessors(fluent = true)
public class PojoA {
private String stringA;
private int integer;
}
Run Code Online (Sandbox Code Playgroud)
我想把它转换成 PojoB
@Setter
@Getter
@ToString
public class PojoB {
private String stringB;
private int integer;
}
Run Code Online (Sandbox Code Playgroud)
映射器接口
@Mapper
public interface PojoMapper {
PojoMapper INSTANCE = Mappers.getMapper(PojoMapper.class);
@Mapping(source = "stringA", target = "stringB")
PojoB pojoAToPojoB(PojoA pojoA);
}
Run Code Online (Sandbox Code Playgroud)
这失败了,因为它无法找到 getter 作为 fluent 从 getter 中删除前缀,我知道 mapstruct 生成映射器接口的实现并使用 bean 规范(即获取和设置前缀)
有没有办法克服它?
我正在使用 foreach 迭代一个集合,我正在使用 intelliJ IDE。
queue.forEach(s->{
System.out.println(s);
});
Run Code Online (Sandbox Code Playgroud)
我在这里收到警告“可以用方法引用替换..”
谁能建议我如何在这里使用方法参考?
实施 spring 安全性(基本表单身份验证)后,我无法使用 获取当前请求RequestContextHolder.getRequestAttributes(),之前工作正常。
问题是 RequestContextHolder.getRequestAttributes() 为空,我需要从登录请求中获取额外的参数(租户 ID)才能选择正确的数据库。
这是我的代码:
安全
@EnableWebSecurity
public class Security extends WebSecurityConfigurerAdapter {
@Autowired
private MyUserDetailsService myUserDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/assets/**")
.permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/dashboard/login")
.defaultSuccessUrl("/dashboard/home")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.authenticationProvider(authenticationProvider());
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authProvider
= new DaoAuthenticationProvider();
authProvider.setUserDetailsService(myUserDetailsService);
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(11);
}
} …Run Code Online (Sandbox Code Playgroud) 静态变量存储在哪里?据我所知,在 Java 7 中它是 PermGen。但是 java 8 迁移到了 MetaSpace。那么它们是存储在 MetaSpace 中还是存在其他位置?
我在 linux 服务器 RHEL 7 中安装了 jdk1.8.0_161 .. 由于“/usr/bin/javac: /lib/ld-linux.so.2: bad ELF interpreter: No such file or目录”
以下是我安装jdk的步骤,
cd /opt/jdk1.8.0_161/
alternatives --install /usr/bin/java java /opt/jdk1.8.0_161/bin/java 2
alternatives --config java
There is 1 program that provides 'java'.
Selection Command
-----------------------------------------------
*+ 1 /opt/jdk1.8.0_161/bin/java
Enter to keep the current selection[+], or type selection number: 1
alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_161/bin/jar 2
alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_161/bin/javac 2
alternatives --set jar /opt/jdk1.8.0_161/bin/jar
alternatives --set javac /opt/jdk1.8.0_161/bin/javac
java -version
-bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF …Run Code Online (Sandbox Code Playgroud) 我正在尝试将下面的嵌套循环转换为流 Java 8。
newself2中的每个元素都是一个字符串列表——["1 2","3 4"]需要改为["1","2","3","4"]。
for (List<String> list : newself2) {
// cartesian = [["1 2","3 4"],["4 5","6 8"]...] list = ["1 2","3 4"]...
List<String> clearner = new ArrayList<String>();
for (String string : list) { //string = "1 3 4 5"
for (String stringElement : string.split(" ")) {
clearner.add(stringElement);
}
}
newself.add(clearner);
//[["1","2","3","4"],["4","5","6","8"]...]
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我所尝试的 -
newself2.streams().forEach(list -> list.foreach(y -> y.split(" ")))
Run Code Online (Sandbox Code Playgroud)
现在我确定如何将内部 for 循环中的拆分数组添加到新列表 for x?
任何帮助是极大的赞赏。
我有一个Stream<Set<Integer>> intSetStream.
我可以这样做...
Set<Integer> theSetWithTheMax = intSetStream.max( (x,y)->{ return Integer.compare( x.size(), y.size() ); } ).get( );
Run Code Online (Sandbox Code Playgroud)
...我掌握了其中元素Set<Integer>数量最多的Integer那个。
那太棒了。但我真正需要知道的是,这是第一次Set在Stream这最大?或者是10日Set在Stream?还是i第Set?其中哪一个元素最多?
所以我的问题是:有没有一些方法-使用Stream API -我可以确定“这是i个Set在Stream中Set传回他们所有的最大价值,为氏Set.size( )呼叫”?
我能想到的最佳解决方案是迭代Stream<Set<Integer>>(使用intSetStream.iterator())并进行手动max( )计算。但我希望学习更多Stream-y 的方法;如果有这样的事情。