我正在阅读有关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?
我正在研究一个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 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)
这给了我一个编译器错误。有可能做到吗?
最近我有一个面试,我被问到一个问题。
我有 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)
那么解决这个问题的更好方法是什么?
我试图将整数列表转换为逗号分隔整数的字符串。
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". 有用。
我一直试图使用泛型返回一个地图:
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 ×6
algorithm ×2
java-8 ×2
java-stream ×2
arrays ×1
collectors ×1
for-loop ×1
function ×1
generics ×1
hibernate ×1
integer ×1
performance ×1
set ×1
spring ×1
spring-boot ×1