我已经测试了Java 8 lambdas和stream上的max()函数,看起来如果执行max(),即使多个对象比较为0,它也会返回绑定候选者中的任意元素进一步考虑.
对于这样的最大预期行为是否有明显的技巧或功能,以便返回所有最大值?我没有在API中看到任何内容,但我确信它必须存在比手动比较更好的东西.
例如:
//myComparator is an IntegerComparator
Stream.of(1,3,5,3,2,3,5).max(myComparator).forEach(System.out::println);
//Would print 5,5 in any order.
Run Code Online (Sandbox Code Playgroud) 在Java中是否有任何方法可以从最后找到一个char的indexOf并将length()作为参考,就像其他语言一样?
new String("abcd").reverseIndexOf("d"(,[4 or -0]))
or new String("abcd").indexOf("d",-0) // Should return a (-)1
Run Code Online (Sandbox Code Playgroud)
......而不是显而易见的
new String("abcd").indexOf("d") - newString("abcd").length()
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在研究内部连接,而且我是一个老的SQL-92人.我想知道其含义,并了解它是如何工作的.所以这只是关于SQL连接的理论问题.这是...
SELECT * FROM -- Query 1
tbl1
INNER JOIN (
tbl2
INNER JOIN (
tbl3 INNER JOIN tbl4 ON tbl3.Col1 = tbl4.Col1
)
ON tbl2.col1 = tbl3.col2
)
ON tbl1.col1 = tbl3.col3
Run Code Online (Sandbox Code Playgroud)
......跟这个一样吗?
SELECT * FROM -- Query 2
tbl3
INNER JOIN tbl4 ON tbl3.col1 = tbl4.col1
INNER JOIN tbl2 ON tbl2.col1 = tbl3.col2
INNER JOIN tbl1 ON tbl1.col1 = tbl3.col3
Run Code Online (Sandbox Code Playgroud)
......或者这个(没有按逻辑分辨率排序)?
SELECT * FROM -- Query 3
tbl3
INNER JOIN tbl1 ON tbl1.col1 = tbl3.col3
INNER JOIN tbl2 …Run Code Online (Sandbox Code Playgroud) 无论是在Javadoc中还是在代码本身中,Comparator接口都定义了:
int compare(T o1, T o2);
boolean equals(Object obj);
Run Code Online (Sandbox Code Playgroud)
但是这样就没有probs编译:
Comparator a = new Comparator() {
@Override public int compare(Object o1, Object o2) {
//..
}
};
Run Code Online (Sandbox Code Playgroud)
但这样做:
Comparator a = new Comparator() {
@Override public boolean equals(Object comparator) {
//..
}
};
Run Code Online (Sandbox Code Playgroud)
它是如何为接口完成的,允许我们不要覆盖方法?
基本上我寻找一种避免使用的方法
entry -> entry.getValue
Run Code Online (Sandbox Code Playgroud)
和
entry -> entry.getKey
Run Code Online (Sandbox Code Playgroud)
类似于什么Map.forEach().
如果我能找到一种工作方式map.stream().filter((k,v) -> )......等等
看起来这个界面叫做BiConsumer.或许转换为BiConsumer转换器或Stream.generate()
什么区别themeDisplay.getUser().getGroupId()和themeDisplay.getScopeGroupId()?
如果我Layouts从中检索(页面),它们是否会有任何不同的URL模式,/web-or-user/<user>/*或者/web-or-user-or-group/<group>/*?
我的意思是说得对,每个用户都有他自己的团队或者什么?
据我所知,到目前为止,看起来用户Foo已经将UserFoo和GroupFoo组合在一起,因此您可以检索Foo或Foo组的个人页面...我是好的方式吗?
例如,何时使用
GetterUtil.getBoolean()
Run Code Online (Sandbox Code Playgroud)
什么时候
ParamUtil.getBoolean()?
Run Code Online (Sandbox Code Playgroud)
两者是相同的,还是根据参数,变量等预期使用不同?你能举两个例子吗?
我需要输入方法签名,因此它接受2个不同特定具体子类型的同等类型参数.
是否可以用泛型编写这样的代码?你会如何解决它?(这个案子绝对是一个例子)
public <T extends List<?>> T<String> sum(T<Integer> sublistOfInts, T<Boolean> sublistOfBooleans){
/*fusion both lists*/
return sublistOfStrings;
}
Run Code Online (Sandbox Code Playgroud)
编辑:最后,我正在寻找的是编译器传递的方式:
ArrayList<String> myList = sum(new ArrayList<Integer>(), new ArrayList<Boolean>());
Run Code Online (Sandbox Code Playgroud)
但不是:
ArrayList<String> myList = sum(new ArrayList<Double>(), new ArrayList<Boolean>());
Run Code Online (Sandbox Code Playgroud)
也不
ArrayList<String> myList = sum(new LinkedList<Integer>(), new ArrayList<Boolean>());
(...)
Run Code Online (Sandbox Code Playgroud)
编辑2:我找到了一个更好的例子.想象一个接口Tuple,子类Duple,Triple> ...,有类似的东西会很不错
<T extends Tuple<?>> T<String> reset( T<String> input, T<Boolean> listToNull){
T copy = input.copy();
for (int i=0; i<input.size();i++){
if (listToNull.get(i)){
copy.set(i,null);
}
}
}
Run Code Online (Sandbox Code Playgroud) 编辑:我改变了一个例子来获得这个想法:
喜欢
<Integer or Float>
Run Code Online (Sandbox Code Playgroud)
...无需创建公共接口并为Integer和Float创建子类来实现它
如果没有,这样的事情可能会更有意义并且有用
<E extends Number> <E = (Integer|Float)>
Run Code Online (Sandbox Code Playgroud)
如果?是一个通配符为什么我们不应该允许限制某些类型?
java ×7
java-8 ×3
collections ×2
generics ×2
java-stream ×2
lambda ×2
liferay ×2
api ×1
comparator ×1
indexof ×1
inheritance ×1
interface ×1
join ×1
methods ×1
ms-access ×1
mysql ×1
nested ×1
primitive ×1
reverse ×1
sql ×1
string ×1
types ×1
usergroups ×1