小编Nam*_*man的帖子

如何在IntelliJ-IDEA中查看默认的Java类实现?

有时我会阅读在线javadocs并仍然想知道特定方法是如何工作的.例如,我最近在查看用于Java-11的ArrayList在线javadoc,我无法判断"remove"方法是否缩短了数组的长度,或者只是将空值保留在曾经是元素的位置.

如何查看IntelliJ-IDEA中默认Java类的代码实现?

java intellij-idea

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

将java Stream转换为Set

我有一个2-D的int数组,以及一个带有指向其中一行的参数的方法.我想Set在该行的元素上返回非零值,并且我想在没有for循环的情况下执行此操作.所以这就是我尝试过的:

public Set<Integer> getNeighbors(int node) {
        assert node >= 0 && node < numNodes : "getNeighbors(): Invalid node parameter given: " + node + ".";
       return Arrays.stream(matrix[node]).filter(n->n>0).collect(Collectors.toSet());
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到一个编译时错误,有点难以解析:

来自我的IDE的屏幕截图

有任何想法吗?

java lambda java-stream

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

使用Stream java 8将String转换为set <Character>

private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
SortedSet<Character> set= new TreeSet<Character>();
for (int i = 0; i < ALPHABET.length(); i++) {
    set.add(new Character(ALPHABET.charAt(i)));
 }
Run Code Online (Sandbox Code Playgroud)

我想用Java 8方式转换这个for循环.如果使用流可能会更好.输出将是包含Character的"set"对象.

java collections java-8 java-stream

1
推荐指数
3
解决办法
201
查看次数

Java流中的中间操作

在java 8中,我使用Streams打印输出,但大小为0。为什么?

public class IntermediateryAndFinal {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("one", "two", "three", "four", "five");

        Predicate<String> p1 = Predicate.isEqual("two");
        Predicate<String> p2 = Predicate.isEqual("three");

        List<String> list = new ArrayList<>();

        stream.peek(System.out::println)
            .filter(p1.or(p2))
            .peek(list::add);
        System.out.println("Size = "+list.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

java collections java-8 java-stream

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

是否可以构建一个使用 SSL/TLS JAVA_OPTS 作为其 SSLContext 的 Java 11 HttpClient?

我知道HttpClientBuilder您可以使用 Apache调用useSystemProperties(),如果传递为,它将创建一个SSLContextjavax.net.ssl.keyStore(和信任库)配置的客户端JAVA_OPTS

try (CloseableHttpClient client = HttpClientBuilder.create().useSystemProperties.build()) {
  // If javax.net.ssl props are set, make requests that require client auth
  // Otherwise make regular requests
}
Run Code Online (Sandbox Code Playgroud)

我想用 Java 11 做一些类似的事情HttpClient。这样做的原因是在我的用例中,我将密钥存储和信任存储视为可选的,并且不必在我的代码中检查它们的存在会很好。基本上,我想SSLContext根据JAVA_OPTS它们是否存在来设置;否则只使用"Default"上下文

java ssl java-http-client java-11

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

如果在Java 8中stream之前collection为null,如何返回false?

我写了下面的代码来检查某些情况。

/**
 * Returns true if any of the dose detail is an x
 * @return boolean
 */
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
    return dds.stream().anyMatch(dd -> dd.M().K());
}
Run Code Online (Sandbox Code Playgroud)

但是此方法有一些风险dds,为空。我需要返回false也是dd也为null。如何使用Java 8将此方法修改为null安全?

java collections java-8 java-stream

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

记录密码查询

有没有办法记录我们使用 spring jpa 内置查询(如 findById!)时生成的密码查询?我有一个复杂的内置查询,我需要查看其密码

java java-8 spring-data-neo4j

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

我可以避免使用“泛型”或更好的“设计模式”进行显式转换吗?

我有一个界面

public interface Query {

}
Run Code Online (Sandbox Code Playgroud)

及其实现:

public class UserQuery implements Query {
// specific properties to query a user
}
Run Code Online (Sandbox Code Playgroud)

和另一个界面

public interface Queries{

protected void runQuery(Query q);
}
Run Code Online (Sandbox Code Playgroud)

以及利用它的实现:

public UserQueries extends Queries{

@Override
protected void runQuery(Query q){

// can I avoid this explicit cast with generic type parameters or other design patterns?
// for example Query<UserQuery> ?
var uq = (UserQuery) q;
..

}
Run Code Online (Sandbox Code Playgroud)

}

所有作品,但是,如何避免强制转换runQuery(Query q)(可能带有runQuery(Query<T> q))?

想象一下,一组不同的实现的QueryUserQuery, …

java generics design-patterns

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

Java 中的 lambda 表达式 ClassCastException

我正在尝试在 Java 8 中学习流媒体。以下是我的代码:

主程序

public class Main {
    public static void main(String[] args) {

        Person person = new Person("FirstName", "LastName");
        List<Person> personList = new ArrayList<>();
        personList.add(person);

        Place place = new Place("name", "country");
        List<Place> placeList = new ArrayList<>();
        placeList.add(place);


        List<List<Object>> objects = new ArrayList<>();
        objects.add(Collections.singletonList(personList));
        objects.add(Collections.singletonList(placeList));

        List<Object> persons = objects.get(0);
        List<String> firstNames = persons.stream()
                .map(o -> ((Person)o).getFirstName())
                .collect(Collectors.toList());

        firstNames.forEach(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

人.java

@Data
public class Person {
    String firstName;
    String lastName;

    public Person(String firstName, String lastName) {
        setFirstName(firstName);
        setLastName(lastName);
    } …
Run Code Online (Sandbox Code Playgroud)

java casting java-8 java-stream

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

Java8流:流中的通用记录器方法

我想创建一种在流中打印出信息的方法。请查看我现有的记录器方法。方法参数必须是通用的,例如在我的示例字符串和整数中。在我的情况下,该方法应该返回原始对象。有人可以告诉我当前方法有什么问题吗?

在此先多谢!

看一下记录器方法

Stream<String> stream = Stream.of("A", "BC", "XYZ");

stream.map(t -> logger(t.length()))
   .map(t-> logger(t.substring(0, 2)))
   .collection(Collectors.toList());

public static <T> T logger(T t) {
    System.out.println(t);
    return t;
  }
Run Code Online (Sandbox Code Playgroud)

错误:无法推断地图的类型参数(函数)

java functional-programming java-8 java-stream

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