小编Vin*_*ati的帖子

设置Spring Profile变量

我有两个Spring配置文件:devtest.我想在服务器环境中设置活动配置文件,我不想在我的代码中设置它,这样无论我在何处部署应用程序,都会根据服务器中的配置文件加载配置文件.我怎样才能做到这一点?

spring spring-profiles spring-boot

60
推荐指数
4
解决办法
9万
查看次数

在返回常量哈希码的情况下,Java8 Hashmap重新进行

根据下面的代码,hashmap初始dafault容量是16,LF是0.75,所以当我输入第13个元素然后重新发送应该发生并且因为我提供了一个常量哈希码,它在内部维护一个链表以维持一个插入顺序.因此,直到第10个元素它按预期工作,但是当我输入第11个元素时,它会改变顺序.任何人都可以帮助我理解为什么它只在第11个元素插入时发生.

class A{
    int a;

    A(int a){
        this.a = a;
    }
    @Override
    public int hashCode() {
        return 7;
    }
    @Override
    public String toString() {
        return "" + a + "";
    }
}
class Base {
    public static void main(String[] args) {
        Map<Object, Integer> m = new HashMap<Object, Integer>();
        m.put(new A(1), 1);
        m.put(new A(2), 1);
        m.put(new A(3), 1);
        m.put(new A(4), 1);
        m.put(new A(5), 1);
        m.put(new A(6), 1);
        m.put(new A(7), 1);
        m.put(new A(8), 1);
        m.put(new A(9), 1);
        m.put(new A(10), 1);
        //m.put(new A(11), …
Run Code Online (Sandbox Code Playgroud)

java hashmap java-8

17
推荐指数
2
解决办法
733
查看次数

Java 8 Stream API - 选择分组后的最低密钥

我有一个Foo对象流.

class Foo {
    private int variableCount;
    public Foo(int vars) {
        this.variableCount = vars; 
    }
    public Integer getVariableCount() { 
      return variableCount; 
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要一个列表,Foo它们都具有最低的variableCount.

例如

new Foo(3), new Foo(3), new Foo(2), new Foo(1), new Foo(1)
Run Code Online (Sandbox Code Playgroud)

我只希望流返回最后2 Foo

我试过用分组进行收集

.collect(Collectors.groupingBy((Foo foo) -> {
                    return foo.getVariableCount();
})
Run Code Online (Sandbox Code Playgroud)

这会返回一个Map<Integer, List<Foo>>,我不知道如何将其转换为我想要的.

提前致谢

java java-8 java-stream

16
推荐指数
3
解决办法
2011
查看次数

如何在Eclipse Oxygen中设置java 10?

我不确定最新版本的eclipse即Oxygen是否支持java 10.我从我的mac机器上的首选项配置了Java 10的JRE.

在此输入图像描述

另外,我尝试将maven编译器插件添加到我的pom.xml中: -

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>10</source>
                <target>10</target>
                <compilerVersion>10</compilerVersion>
                <fork>true</fork>
                <executable>/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home</executable>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

设置运行配置后我也尝试了如下: -

在此输入图像描述

有人知道我怎么能让它适用于java-10.

我尝试运行以下代码: -

public class App {
    public static void main(String[] args) {
        var list = new ArrayList<String>();
        System.out.println("Hello World!");

    }
}
Run Code Online (Sandbox Code Playgroud)

更新: -我在评论中应用了建议的补丁,但仍然失败.

截图如下: -

在此输入图像描述

另外,我按照这篇文章进行编译.所以,编译实际上是从eclipse(maven install)工作的,但是当我尝试运行应用程序时它仍然失败.

java eclipse java-10

16
推荐指数
1
解决办法
2万
查看次数

spring.datasource.initialize 已弃用

我有一个 springboot 应用程序,我试图将以下内容添加到application.properties文件中

spring.datasource.initialize=false

当我添加这个时,我看到如下警告:

在此处输入图片说明

我试图找出取代这个已弃用属性的新属性是什么,但徒劳无功。

任何人都可以帮助解决这个问题!

参考迁移指南会很棒。

java spring-boot

11
推荐指数
2
解决办法
7395
查看次数

如何使用Collectors.groupingBy创建嵌套Map?

我有一个班级列表说 ProductDto

public class ProductDto {
    private String Id;
    private String status;
    private Booker booker;
    private String category;
    private String type;
}
Run Code Online (Sandbox Code Playgroud)

我想要一张地图如下: -

Map<String,Map<String,Map<String,Booker>>

属性将映射如下:

Map<status,Map<category,Map<type,Booker>

我知道可以轻松完成一个级别的分组而无需任何麻烦Collectors.groupingBy.

我试图将它用于嵌套级别,但是当我为关键字段开始出现相同的值时,它失败了.

我的代码如下: -

 list.stream()
                .collect(Collectors.groupingBy(
                        (FenergoProductDto productDto) -> 
                        productDto.getStatus()
                        ,
                        Collectors.toMap(k -> k.getProductCategory(), fProductDto -> {
                            Map<String, Booker> productTypeMap = new ProductTypes();
                            productTypeMap.put(fProductDto.getProductTypeName(),
                                    createBooker(fProductDto.getBookingEntityName()));
                            return productTypeMap;
                        })
                ));
Run Code Online (Sandbox Code Playgroud)

如果有人知道通过使用流来做到这一点的好方法,请分享!

java java-8 java-stream

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

如何通过','使用带'作为前缀和后缀的流来加入列表元素

我有一个插入语句,如下所示

private final COLUMNS = "NAME,TYPE,STATUS,CATEGORY";

String values = list
    .stream()
    .collect(Collectors.joining(","));

String insertStatement = String.format("INSERT INTO ifc.documents (%s) VALUES (%s) ",COLUMNS,values); 
Run Code Online (Sandbox Code Playgroud)

我可以轻松地将COLUMNS设置为不需要引号但是对于值,我的SQL失败并且抱怨上面的代码缺少引号.

所以,我试过了

 String values = list.stream()
.collect(Collectors.joining("','"));
Run Code Online (Sandbox Code Playgroud)

但它也失败了.所以我做了一个解决方法,并添加了另一个语句前缀和后缀单引号,它开始工作.

 values = "'"+values+"'";
Run Code Online (Sandbox Code Playgroud)

更具体地说,如果我在列表中说"休息","测试"和"最佳"

然后预期的产出是

'rest','test','best'
Run Code Online (Sandbox Code Playgroud)

有人知道更好的解决方案吗?

java java-8 java-stream

8
推荐指数
2
解决办法
2060
查看次数

当我在Java中扩展ArrayList时,如何添加地图和过滤器?

我正在尝试创建一个table扩展的类ArrayList.在其中,我希望能够创建一个map采用lambda表达式并返回table带有映射值的new 的方法.我也想这样做filter.我使用地图和过滤很多,我不喜欢一遍又一遍地输入整个东西.

public abstract class Table<E extends Element> extends ArrayList<E> {
    // a lot of other stuff.

    public Table<E> map(/*WHAT DO I PUT HERE?*/ mapper) {
        return this.stream().map(mapper).collect(/*WHAT DO I PUT HERE?*/);
    }

    public Table<E> filter(/*WHAT DO I PUT HERE?*/ predicate) {
        return this.stream().filter(predicate).collect(/*WHAT DO I PUT HERE?*/);
    }
}
Run Code Online (Sandbox Code Playgroud)

我仍在试图找出泛型.也许有更好的方法.我不知道.我曾尝试复制原始代码中的内容ArrayList,但我尝试的所有内容似乎都会产生新的问题.

java generics extends arraylist java-8

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

var无法解析为类型 - java-10

我只是在我的mac机器上安装了JDK 10.检查版本: -

localhost:java-10 vinayprajapati$ java -version
java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
Run Code Online (Sandbox Code Playgroud)

为了确保使用的编译器也是同一个版本,我运行如下: -

localhost:java-10 vinayprajapati$ javac -version
javac 10
Run Code Online (Sandbox Code Playgroud)

我创建了一个简单的Maven项目,其结构如下:

localhost:java-10 vinayprajapati$ tree
.
??? pom.xml
??? src
?   ??? main
?   ?   ??? java
?   ?       ??? com
?   ?           ??? practice
?   ?               ??? java_10
?   ?                   ??? App.java
?   ??? test
?       ??? java
?           ??? com
?               ??? practice …
Run Code Online (Sandbox Code Playgroud)

java maven java-10

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

Hibernate命名策略

我正在使用Spring(Boot)构建REST Web服务,并尝试使用hibernate作为orm mapper而不使用任何xml配置.

我基本上可以使用它,但我遇到了配置问题.我实例LocalContainerEntityManagerFactoryBean作为@Bean一个@Configuration文件.

hibernate.ejb.naming_strategy在下面的例子中设置 - >这似乎适用于创建表,如果它们不存在(列名是像我的@Entity类中的camelCase)但是当执行查询时,hibernate"忘记"关于这个命名配置和尝试使用另一种命名策略与under_score_attributes - >显然这些查询失败.我需要设置其他任何属性吗?

或者另一种配置属性的方法,最好不要添加cfg.xml或者persistence.xml

LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();   
Properties props = new Properties();
props.put("hibernate.hbm2ddl.auto", "create");
props.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.DefaultNamingStrategy");
lef.setJpaProperties(props); 
lef.afterPropertiesSet();
Run Code Online (Sandbox Code Playgroud)

spring hibernate hibernate-annotations spring-boot

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