标签: java-8

Java 8如何流到数组大小的工作原理?

String[] stringArray = streamString.toArray(size -> new String[size]);
Run Code Online (Sandbox Code Playgroud)

如何自动将大小视为流的大小?

java-8 java-stream

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

Java8 list <T>列出<object []>

如何使用流解析Generic到Object []?我有过

private static <T> List<Object[]> selectData(List<T> a,
    Predicate<T> predicate) {
    ArrayList<Object[]> tmp = new ArrayList<Object[]>();
    for (T x : a) {
      if (predicate.test(x)) {
        tmp.add(new Object[] { x });
      }
    }   
return tmp;
}
Run Code Online (Sandbox Code Playgroud)

但我想做的事情如下:

...//    
return a.stream().filter(predicate).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将每个元素转换为Object []

java list java-8 java-stream

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

java.nio.Path的方法如何工作

我已经nio.2Java文档开始在Java 8中进行研究。当我研究时java.nio.file.Path,java文档的第一行是

在Java SE 7发行版中引入的Path类。

这意味着Path是一堂课,但是当我看这里时,我发现那Path是一门课interface

那么,为什么Java文档说它是一个类。

我的另一个疑问是,如果Pathinterface那么如何Path方法(如getRoot() isAbsolute()和所有其他)的工作,因为没有的方法实现Path接口。

我知道在一个陈述中问两个不同的问题很麻烦,但我不知道如何将这两个问题分开。

编辑:这个问题不能被复制的这个,因为在这个问题提问要求执行Path接口,但在这里,我问怎么这个接口工作的方法,我的意思是它内部由JVM或任何其他机制执行用于执行它们。

java oracle java-8

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

使用lambdas迭代集合时使用setter方法

这似乎是一个简单的问题,但我一直在坚持我的这个小问题.

在java 7中,您可以迭代对象并将新值设置为其属性.

for (int i = 0; i < continentLijst.size(); i++) {
        continentLijst.get(i).setContinentId(i);
}
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找在Java 8 lambda中做同样的事情.我想的是:

 int i =0;

 continentLijst.stream().forEach(e -> {

        e.setContinentId(i++);
  });
Run Code Online (Sandbox Code Playgroud)

这显然是一个错误...正如我所说,这可能是我正在制作的初学者错误,但任何帮助都会很棒!

java collections lambda java-8

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

Java 8 Streams修改集合值

使用流API; 一旦相关数据被过滤,我想编辑正在收集的数据.这是迄今为止的代码:

  String wordUp = word.substring(0,1).toUpperCase() + word.substring(1);
  String wordDown = word.toLowerCase();

  ArrayList<String> text = Files.lines(path)
        .parallel() // Perform filtering in parallel
        .filter(s -> s.contains(wordUp) || s.contains(wordDown) &&  Arrays.asList(s.split(" ")).contains(word))
        .sequential()
        .collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)

编辑下面的代码很糟糕,我试图避免它.(它也没有完全奏效.它是在凌晨4点完成的,请原谅.)

    for (int i = 0; i < text.size(); i++) {
        String set = "";
        List temp = Arrays.asList(text.get(i).split(" "));
        int wordPos = temp.indexOf(word);

        List<String> com1 = (wordPos >= limit) ? temp.subList(wordPos - limit, wordPos) : new ArrayList<String>();
        List<String> com2 = (wordPos + limit < text.get(i).length() -1) …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream collectors

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

在Java 8 Streams中调用动态函数

List<?> temp = empObjList.stream()
                    .filter(nestedDo -> nestedDo.getAttrib1() == "subject")
                    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

这里我调用方法getAttrib1().但是要调用的方法只能动态识别.我将只获得函数的名称作为String值.我想将它动态转换为函数.我知道我可以使用Reflection来进行动态方法调用,但我不能通过反射重写上面的代码.

java java-8

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

与java8 x64的JTDS 1.3连接问题

尝试在Windows 7上使用jtds 1.3 + jdk1.8(64)时出现以下错误.

Exception in thread "main" java.lang.RuntimeException: Error initializing DESEngine
    at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:76)
    at net.sourceforge.jtds.util.DESEngine.<init>(DESEngine.java:51)
    at net.sourceforge.jtds.jdbc.NtlmAuth.answerLmChallenge(NtlmAuth.java:52)
    at net.sourceforge.jtds.jdbc.TdsCore.sendNtlmChallengeResponse(TdsCore.java:2179)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:613)
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:369)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at test4.Test4.main(Test4.java:15)
Caused by: java.security.NoSuchAlgorithmException: DES SecretKeyFactory not available
    at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
    at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
    at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:69)
    ... 9 more
Run Code Online (Sandbox Code Playgroud)

示例代码:

public static void main(String[] args) throws Exception {
    String url = "jdbc:jtds:sqlserver://server:1433/db1;domain=dm1";
    String user = "user";
    String pwd = "password";

    Class.forName("net.sourceforge.jtds.jdbc.Driver");
    Connection cn = DriverManager.getConnection(url, user, pwd);
    System.out.println("connected!"); …
Run Code Online (Sandbox Code Playgroud)

jtds java-8

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

如何将这段代码转换为Java 8

我有这个Java 6代码,我想将其转换为Java 8.

BigDecimal sumContributionPercentage = new BigDecimal(0);                   
if (hasElements(mandateDetails)) {
  for (InstrumentMandateDetail mandate: mandateDetails) {
    if(!(VERFI_STATUS_CLOSED.equals(mandate.getMandateVerificationStatusType().getCode()) ||
         VERFI_STATUS_REJECTED.equals(mandate.getMandateVerificationStatusType().getCode()))) {
      sumContributionPercentage = sumContributionPercentage.add(mandate.getContributionPercentage());
    }       
  }
}
Run Code Online (Sandbox Code Playgroud)

java java-8

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

Java流排序不起作用

我有一个

HashMap<String,Integer> map 
Run Code Online (Sandbox Code Playgroud)

我希望按值按降序排序:

HashMap<String,Integer> topSorted = new HashMap<>();

//sort map in descending order
Stream<HashMap.Entry<String,Integer>> st = map.entrySet().stream();
st.sorted(Comparator.comparing((HashMap.Entry<String,Integer> e) -> e.getValue()).reversed())
        .forEach(e -> topSorted.put(e.getKey(),e.getValue()));
Run Code Online (Sandbox Code Playgroud)

但topsorted仍然与地图相同,根本没有进行排序

有人可以解释我做错了什么

java sorting java-8 java-stream

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

切换到Java 8时的比较器问题

我正在从Java 6迁移到Java 8,并注意到Comparator接口特有的一些东西.对此的任何见解都会非常有帮助.

当我切换到Java 8时,对象的顺序在"compare"方法内切换,列表排序失败.我回到java 6,它工作得很好.这是一个测试用例,使用Java 8失败了,并且使用了Java 6.

public class ComparitorTest {

@Test
public void comparatorTest(){
    Record record1 = new Record("First", false);
    Record record2 = new Record("Second", true);
    List<Record> list = new ArrayList<Record>();

    list.add(record1);
    list.add(record2);


    final Comparator<Object> recordComparator = new Comparator<Object>()
            {
                public int compare( Object o1, Object o2 )
                {
                    Record r1 = (Record) o1;
                    Record r2 = (Record) o2;

                    Boolean isReadonly_R1 = r1.getIsReadOnly();
                    Boolean isReadOnly_R2 = r2.getIsReadOnly();

                if( isReadonly_R1.equals( Boolean.TRUE ) )
                    {
                        return 0;
                    }
                    else
                    { …
Run Code Online (Sandbox Code Playgroud)

java sorting comparator java-6 java-8

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