标签: java-8

两种类型的方式之间的区别铸造List to List <T>

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)

这两种方法有什么区别?一种方式比另一种方式更安全或更快还是无关紧要?

java java-8

0
推荐指数
1
解决办法
111
查看次数

stream.forEach中的多行代码

我有以下代码来读取文件的行:

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)

但它不能以这种方式工作,所以任何人都可以帮助我如何使它工作?

java java-8 java-stream

0
推荐指数
3
解决办法
7331
查看次数

带有lambda的Java过滤器

我正在尝试用lambda制作一个过滤器.有一个字符串列表,其中包含应该排序的值,还有另一个列表,其中包含不同的值(即应该过滤的值).所以我一直想做的是:

stringList = stringList.stream()
       .filter(e ->toBeSortedOutList.forEach(outSorted->!e.startsWith(outSorted)))
       .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

不幸的是,我总是得到错误,布尔值无法转换为void.所以我想知道的是,为什么我得到这个错误,如果可以通过迭代通过列表并使用其值来过滤器进行过滤?谢谢你的回答!

java lambda java-8 java-stream

0
推荐指数
1
解决办法
734
查看次数

JPA AttributeConverter被忽略

我正在尝试使用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类与我的实体位于同一个包中,因此应该扫描它.

我在这里错过了什么?

java hibernate jpa java-8

0
推荐指数
1
解决办法
2596
查看次数

如何在JavaFX 8 TableView中删除条带化的行

我在JavaFX8中使用默认的TableView,但是我需要删除条纹行的颜色。我该如何重写CSS?

css javafx java-8

0
推荐指数
1
解决办法
726
查看次数

Mac上的Java 8和FreeBSD不同的文件排序顺序由修改后的数据组成

我面临着排序文件的奇怪问题.

鉴于环境

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 macos openjdk freebsd java-8

0
推荐指数
1
解决办法
67
查看次数

使用Jersey中的配置属性

我使用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)

java java-8 jersey-2.0 jetty-9

0
推荐指数
1
解决办法
5775
查看次数

是否有用于sdkman的java的sdk管理器,用于grails,groovy和gradle

当前我与grails一起使用的当前java开发工具包版本存在问题,这在springils与grails上的一些Java 8版本一起使用时很常见

引起原因:java.lang.IllegalArgumentException:无法在java.lang.reflect.Method.copy(Method.java:151)处复制非根方法... 120更多

是否有任何sdk管理器,我可以用来下载特定的Java版本,该版本不仅可以下载,而且还可以

  1. 设置当前的Java路径
  2. 设置当前的Java主页
  3. 如果可能的话,设置java选项

我知道ubuntu中的update_alrenatives,但是我说的是gvm或sdkman之类的东西

其他很好的选择,将不胜感激,谢谢

java grails java-8 spring-boot sdkman

0
推荐指数
2
解决办法
2458
查看次数

使用Lambdas的比较器

我有一个比较器,它检查是否有任何字符串为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返回一个简单的比较器.我对如何实现上面的代码很困惑.

java lambda comparator java-8

0
推荐指数
1
解决办法
304
查看次数

java8 map如何简单地将一些元素添加到列表值

我想用来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

0
推荐指数
1
解决办法
5427
查看次数