小编Nic*_*cky的帖子

CrudRepository自定义方法实现?

我正在阅读有关Crudrepository的信息,这是一个特定类型的存储库上的通用CRUD操作的接口.

但是我们可以创建自定义界面并扩展CrudRepository.

我在网上查看了这个例子,看到他们没有在任何地方提供实施.

样品:

@Transactional
public interface UserDao extends CrudRepository<User, Long> {

  /**
   * Return the user having the passed email or null if no user is found.
   * 
   * @param email the user email.
   */
  public User findByEmail(String email);

}
Run Code Online (Sandbox Code Playgroud)

参数是否必须与列名或方法名称相同,如"findBy"+ columnName?

java spring hibernate spring-boot

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

计算许多鱼的时间和空间复杂性还活着吗?

我正在研究一个Codility问题:

您将获得两个由N个整数组成的非空零索引数组A和B. 数组A和B代表河流中的N种贪婪鱼类,沿着河流向下游排序.

鱼的编号从0到N-1.如果P和Q是两条鱼而P <Q,那么鱼P最初是鱼Q的上游.最初,每条鱼都有一个独特的位置.

鱼数P由A [P]和B [P]表示.数组A包含鱼的大小.它的所有元素都是独特的.数组B包含鱼的方向.它只包含0和/或1,其中:

0表示向上游流动的鱼,1表示向下游流动的鱼.如果两条鱼在相反的方向上移动并且它们之间没有其他(活鱼),它们最终会相遇.然后只有一条鱼可以活着 - 较大的鱼吃较小的鱼.更确切地说,当P <Q,B [P] = 1且B [Q] = 0时,我们说两条鱼P和Q彼此相遇,并且它们之间没有活鱼.他们见面后:

如果A [P]> A [Q]则P吃Q,P仍将向下游流动,如果A [Q]> A [P]则Q吃P,Q仍然会向上游流动.我们假设所有的鱼都以相同的速度流动.也就是说,沿同一方向移动的鱼永远不会相遇.目标是计算将保持活力的鱼的数量.

**Complexity:**
Run Code Online (Sandbox Code Playgroud)

预期的最坏情况时间复杂度是O(N); 预期的最坏情况空间复杂度是O(N),超出输入存储(不计入输入参数所需的存储).

这是我的解决方案:( 100%正确结果)

public int solution(int[] a, int[] b) {
  int remFish = a.length; 
  int i = 0; 
  for (i = 0; i < b.length; i++) {
    if(b[i] != 0){
      /*remFish++; }else { */ break; 
    }
  } 
  Stack<Integer> myQ = new Stack<Integer>(); 
  for (int j = i; j < b.length; j++) { 
    if(b[j] …
Run Code Online (Sandbox Code Playgroud)

java algorithm performance time-complexity space-complexity

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

用更少的努力在java流中重写算法?

我正在学习 Java 8 中的 Streams。

例如,如果我必须将一个数字加倍:

Arrays.stream(intArray).map(e->e*2).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

如果我必须对一个数字进行平方,那么我可以在下面使用:

Arrays.stream(intArray).map(e->e*e).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

但是,如果我必须使用"andThen"method在同一个 Integer 数组上应用这两个函数java.util.function.Function,我将通过以下方式进行:

  Function<Integer, Integer> times2 = e -> e * 2;

  Function<Integer, Integer> squared = e -> e * e;  

 Arrays.stream(intArray).map(times2.andThen(squared)).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

是否可以在单行中重写此(3 个语句),例如:

Arrays.stream(intArray).map(e->e*2.andThen(f->f*f)).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译器错误。有可能做到吗?

java arrays function java-8 java-stream

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

从 2 个集合中找到共同元素的最佳方法是什么?

最近我有一个面试,我被问到一个问题。

我有 2 套,每套大约有 100 万条记录。我必须在 2 个集合中找到公共元素。

我的回复:

我将创建一个新的空 Set。我给了他以下解决方案,但他对此并不满意。他说有 100 万条记录,所以解决方案不会很好。

public Set<Integer> commonElements(Set<Integer> s1, Set<Integer> s2) {
    Set<Integer> res = new HashSet<>();
     for (Integer temp : s1) {
        if(s2.contains(temp)) {
            res.add(temp);
        }
     }
     return res;
}
Run Code Online (Sandbox Code Playgroud)

那么解决这个问题的更好方法是什么?

java algorithm for-loop set

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

将整数列表转换为逗号分隔的字符串?

我试图将整数列表转换为逗号分隔整数的字符串。

Collectors.joining(CharSequence delimiter) - 返回一个收集器,它按遇到顺序连接输入元素,由指定的分隔符分隔。

List<Integer> i = new ArrayList<>();    //  i.add(null);
for (int j = 1; j < 6; j++) {
    i.add(j);
}
System.out.println(i.stream().collect(Collectors.joining(","))); // Line 8
Run Code Online (Sandbox Code Playgroud)

我在第 8 行出错。

有没有办法通过 Java 8 中的流来做到这一点?

更新:

如果我用"1", "2", "3","4","5". 有用。

java integer java-8 java-stream collectors

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

为什么我会收到类型不匹配错误?

我一直试图使用泛型返回一个地图:

import java.util.HashMap;
import java.util.Map;
public class GenericTest {

    public <T extends Vehicle> Map<String, T> get() {
        Map<String, Car> map = new HashMap<>();
        return map; // Getting error 
    }

}    
class Vehicle {
}    
class Car extends Vehicle {
}
Run Code Online (Sandbox Code Playgroud)

在线,我返回地图,我收到错误

Type mismatch: cannot convert from Map<String,Car> to Map<String,T>
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么吗?

在返回类型中我提到过T扩展了Vehicle.

java generics

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