public static <T> List<T> templatizeList(final List list, final Class<T> clazz) {
return (List<T>) list;
}
public static <T> List<T> typeSafeAdd(List<?> from, Class<T> clazz) {
List<T> to = new ArrayList<>();
from.forEach(item -> to.add(clazz.cast(item)));
return to;
}
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?一种方式比另一种方式更安全或更快还是无关紧要?
我有以下代码来读取文件的行:
String fileName = "dataset/ANC-all-count.txt";
Integer i=0;
//read file into stream, try-with-resources
try (Stream<String> stream = Files.lines(Paths.get(fileName), StandardCharsets.ISO_8859_1)) {
stream.forEach(System.out::println);
i++;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("count is : "+i);
Run Code Online (Sandbox Code Playgroud)
但问题是我需要放入i++以下行:
stream.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
所以我想要这样的东西:
stream.forEach(System.out::println; i++);
Run Code Online (Sandbox Code Playgroud)
但它不能以这种方式工作,所以任何人都可以帮助我如何使它工作?
我正在尝试用lambda制作一个过滤器.有一个字符串列表,其中包含应该排序的值,还有另一个列表,其中包含不同的值(即应该过滤的值).所以我一直想做的是:
stringList = stringList.stream()
.filter(e ->toBeSortedOutList.forEach(outSorted->!e.startsWith(outSorted)))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
不幸的是,我总是得到错误,布尔值无法转换为void.所以我想知道的是,为什么我得到这个错误,如果可以通过迭代通过列表并使用其值来过滤器进行过滤?谢谢你的回答!
我正在尝试使用AttributeConverter使用Hibernate 4.3.0将新的Java 8 ZonedDateTime值存储在MySQL数据库(DATETIME字段)中.
当我尝试执行更新时,我收到此错误:
...Data truncation: Incorrect datetime value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x0D\x06\x00\x00\x07\xE0\x02\x11\x0B&\xEE\xE0\x08\x' for column...
Run Code Online (Sandbox Code Playgroud)
我已经阅读了许多SO答案,说使用转换器方法,所以我写了一个:
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.sql.Date;
import java.time.LocalDate;
import java.time.ZonedDateTime;
@Converter(autoApply = true)
public class ZonedDateTimeConverter implements AttributeConverter<ZonedDateTime, Date> {
@Override
public Date convertToDatabaseColumn(ZonedDateTime zonedDateTime) {
if (zonedDateTime == null) return null;
return java.sql.Date.valueOf(zonedDateTime.toLocalDate());
}
@Override
public ZonedDateTime convertToEntityAttribute(Date date) {
if (date == null) return null;
LocalDate localDate = date.toLocalDate();
return ZonedDateTime.from(localDate);
}
}
Run Code Online (Sandbox Code Playgroud)
......但它永远不会被召唤.
我甚jpaProperties.put("hibernate.archive.autodetection", "class, hbm");至已添加到我的jpaProperties,但没有运气.ZonedDateTimeConverter类与我的实体位于同一个包中,因此应该扫描它.
我在这里错过了什么?
我在JavaFX8中使用默认的TableView,但是我需要删除条纹行的颜色。我该如何重写CSS?
我面临着排序文件的奇怪问题.
鉴于环境
Dev: Mac OS X 10.11.3 OracleJDK 1.8.0_45
PreProduction env: FreeBSD 10 OpenJDK 1.8.0_72
Run Code Online (Sandbox Code Playgroud)
码
public static String getLatestTag() {
File tagsDir = new File("./.git/refs/tags");
...
File[] tags = tagsDir.listFiles();
List<File> tagsList = Arrays.asList(tags);
Collections.sort(tagsList, (f1, f2) -> {
if(f1.lastModified() > f1.lastModified()) {
return 1;
} else if(f1.lastModified() == f2.lastModified()) {
return 0;
} else {
return -1;
}
});
logTagsList(tagsList);
String latestTag = tagsList.get(0).getName();
Logger.info("Application version is: %s", latestTag.replaceAll("[^\\d.]", ""));
return latestTag;
}
private static void logTagsList(List<File> tags) …Run Code Online (Sandbox Code Playgroud) 我使用java/jetty自托管服务器和jersey-2 for java RESTful api.应用程序具有带有属性的application.properties文件.
ConfigurationPropertiesclass读取属性文件并将其加载到java.util.Properties类中.
Jetty服务器实例化以下列方式完成.
// Create and register resources
final ResourceConfig resourceConfig = new ApiServiceConfig()
.register(new DependencyInjectionBinder());
ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
contextHandler.setContextPath("/mydomain/api");
Server jettyServer = new Server(8585);
jettyServer.setHandler(contextHandler);
ServletHolder jerseyServlet = new ServletHolder(new ServletContainer(resourceConfig));
contextHandler.addServlet(jerseyServlet, "/*");
// Create web context. Can't use.
//WebApplicationContext webContext = getWebApplicationContext();
// Add web context to servlet event listener.
//contextHandler.addEventListener(new ContextLoaderListener(webContext));
try {
jettyServer.start();
jettyServer.join();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally …Run Code Online (Sandbox Code Playgroud) 当前我与grails一起使用的当前java开发工具包版本存在问题,这在springils与grails上的一些Java 8版本一起使用时很常见
引起原因:java.lang.IllegalArgumentException:无法在java.lang.reflect.Method.copy(Method.java:151)处复制非根方法... 120更多
是否有任何sdk管理器,我可以用来下载特定的Java版本,该版本不仅可以下载,而且还可以
我知道ubuntu中的update_alrenatives,但是我说的是gvm或sdkman之类的东西
其他很好的选择,将不胜感激,谢谢
我有一个比较器,它检查是否有任何字符串为null并返回-1.如果它们不为null,则进行比较.我希望使用lambda函数实现它.
这是代码:
private SortedSet<Student> studentSet() {
return new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
if(s1.getName() == null) {
return -1;
}
if(s2.getName() == null) {
return 1;
}
return s1.getName().compareToIgnoreCase(s2.getName());
}
});
}
Run Code Online (Sandbox Code Playgroud)
我知道如何使用lambdas返回一个简单的比较器.我对如何实现上面的代码很困惑.
我想用来Map<String, List<String>>记录一些东西,比如每个城市都有多少用户.
现在我的代码是
Map<String, List<String>> map = new HashMap<>();
if(map.get("city_1")==null){
map.put("city_1", new ArrayList<>());
}
map.get("city_1").add("aaa");
Run Code Online (Sandbox Code Playgroud)
但我觉得这有点麻烦,我想要这个效果
Map<String, List<String>> map = new HashMap<>();
map.compute("city_1", (k,v)->v==null?new ArrayList<>():v.add("aaa"));
Run Code Online (Sandbox Code Playgroud)
但它有编译错误:
Type mismatch: cannot convert from boolean to List<String>
Run Code Online (Sandbox Code Playgroud)
那么有任何其他方式可以简化它吗?
java-8 ×10
java ×8
java-stream ×2
lambda ×2
comparator ×1
css ×1
freebsd ×1
grails ×1
hibernate ×1
javafx ×1
jersey-2.0 ×1
jetty-9 ×1
jpa ×1
macos ×1
openjdk ×1
sdkman ×1
spring-boot ×1