假设我有一个简单的列表:
List<String> listOne = Arrays.asList("str1", "result1", "test", "str4", "result2", "test", "str7", "str8");
Run Code Online (Sandbox Code Playgroud)
目标是"测试",我想将目标之前的值添加到新列表中,因此输出将是[result1, result2]
.
使用类似的东西添加"测试"值很容易,listTwo = listOne.stream().filter(i -> i.equals("test")).collect(Collectors.toList());
但是如何根据目标的位置获取其他值(在我的示例中,它只是目标之前的元素)
我试着只是改变了i
到i - 1
但没有采取任何行动.
我知道我可以用一个简单的for循环来做,但只是想知道如何在流中应用相同的逻辑.
for (int i = 1; i < listOne.size(); i++) {
if (listOne.get(i).equals("test")) {
listTwo.add(listOne.get(i - 1));
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个数组如下:
int[] array = {11, 14, 17, 11, 48, 33, 29, 11, 17, 22, 11, 48, 18};
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到重复的值,并打印它们.
所以我这样做的方法是转换为ArrayList
,然后Set
使用stream
on Set
.
ArrayList<Integer> list = new ArrayList<>(array.length);
for (int i = 0; i < array.length; i++) {
list.add(array[i]);
}
Set<Integer> dup = new HashSet<>(list);
Run Code Online (Sandbox Code Playgroud)
然后我用a stream
循环遍历它并使用打印值Collections.frequency
.
dup.stream().forEach((key) -> {
System.out.println(key + ": " + Collections.frequency(list, key));
});
Run Code Online (Sandbox Code Playgroud)
当然,即使计数为1,它们也会打印出来.
我想加入,if(key > 1)
但这是我想要的价值不是关键.
如何在此实例中获取值以仅在哪里打印value > 2
.
我可以投入:
int check = …
Run Code Online (Sandbox Code Playgroud) 我需要cacerts
在我的一台服务器上添加受信任的证书。
我可以看到它$JAVA_HOME/jre/lib/security/
从其他问题中消失了
但我还有第二个cacerts
文件,两个位置是:
C:\Program Files\Java\jdk1.8.0_92\jre\lib\security
C:\Program Files\Java\jre1.8.0_92\lib\security
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一直在将任何证书添加到两者中,这可能不正确。绝对是第一个选项,如果是,第二个选项有什么用?
我得到了一个ResultSet
类型ArrayList<MyClass>
,一切都运行良好,除了它没有从列表中获取第一项。
看来这部分实际上采用了第一个选项并使用它,尽管实际上没有用它做任何事情:
if (!result.next()) {
//throw Excepion
}
Run Code Online (Sandbox Code Playgroud)
然后我运行while (result.next()) {
并填充ArrayList
.
数据库中的第一项只是一个空String
(实际上是一个空格),还有 n 个其他条目。我也想要那里的空白条目,因为这会填充 aJComboBox
并且需要第一个条目始终保留为空白选项。
但是,由于if (!result.next())
在 之前进行了检查while (result.next())
,因此只会从item2
之后显示。如果我删除if
,它将在下拉列表中留下空白选项。
请注意,此代码使用的是try...finally
.
所以我的问题/疑问是:
1)我最好删除并仅针对相同的异常if (!result.next())
添加 a吗?catch
2)是否可以使用我描述的初始方式,但保留结果中的第一个条目?
3)是否有比仅在表中的第一个条目中包含空格更好的方法来获取第一个条目?(请注意,如果它实际上是空白的,并且我删除了if
,它将在下拉表中显示一个很小的选项。
import java.io.*;
public class Test {
public static void main(String args[]) {
String Str = new String("where test = (:viztest)");
System.out.print("Return Value :" );
System.out.println(Str.replaceFirst("(:viztest)", "any('25','324')"));
}
}
Run Code Online (Sandbox Code Playgroud)
结果就是这样
$javac Test.java
$java -Xmx128M -Xms16M Test
Return Value :where test = (any('25','324'))
Run Code Online (Sandbox Code Playgroud)
它应该在哪里 where test = any('25','324')
为什么忽略替换括号以及如何修复它?