String[] stringArray = streamString.toArray(size -> new String[size]);
Run Code Online (Sandbox Code Playgroud)
如何自动将大小视为流的大小?
如何使用流解析Generic到Object []?我有过
private static <T> List<Object[]> selectData(List<T> a,
Predicate<T> predicate) {
ArrayList<Object[]> tmp = new ArrayList<Object[]>();
for (T x : a) {
if (predicate.test(x)) {
tmp.add(new Object[] { x });
}
}
return tmp;
}
Run Code Online (Sandbox Code Playgroud)
但我想做的事情如下:
...//
return a.stream().filter(predicate).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将每个元素转换为Object []
我已经nio.2从Java文档开始在Java 8中进行研究。当我研究时java.nio.file.Path,java文档的第一行是
在Java SE 7发行版中引入的Path类。
这意味着Path是一堂课,但是当我看这里时,我发现那Path是一门课interface。
那么,为什么Java文档说它是一个类。
我的另一个疑问是,如果Path是interface那么如何Path方法(如getRoot() isAbsolute()和所有其他)的工作,因为没有的方法实现Path接口。
我知道在一个陈述中问两个不同的问题很麻烦,但我不知道如何将这两个问题分开。
编辑:这个问题不能被复制的这个,因为在这个问题提问要求执行Path接口,但在这里,我问怎么这个接口工作的方法,我的意思是它内部由JVM或任何其他机制执行用于执行它们。
这似乎是一个简单的问题,但我一直在坚持我的这个小问题.
在java 7中,您可以迭代对象并将新值设置为其属性.
for (int i = 0; i < continentLijst.size(); i++) {
continentLijst.get(i).setContinentId(i);
}
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找在Java 8 lambda中做同样的事情.我想的是:
int i =0;
continentLijst.stream().forEach(e -> {
e.setContinentId(i++);
});
Run Code Online (Sandbox Code Playgroud)
这显然是一个错误...正如我所说,这可能是我正在制作的初学者错误,但任何帮助都会很棒!
使用流API; 一旦相关数据被过滤,我想编辑正在收集的数据.这是迄今为止的代码:
String wordUp = word.substring(0,1).toUpperCase() + word.substring(1);
String wordDown = word.toLowerCase();
ArrayList<String> text = Files.lines(path)
.parallel() // Perform filtering in parallel
.filter(s -> s.contains(wordUp) || s.contains(wordDown) && Arrays.asList(s.split(" ")).contains(word))
.sequential()
.collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
编辑下面的代码很糟糕,我试图避免它.(它也没有完全奏效.它是在凌晨4点完成的,请原谅.)
for (int i = 0; i < text.size(); i++) {
String set = "";
List temp = Arrays.asList(text.get(i).split(" "));
int wordPos = temp.indexOf(word);
List<String> com1 = (wordPos >= limit) ? temp.subList(wordPos - limit, wordPos) : new ArrayList<String>();
List<String> com2 = (wordPos + limit < text.get(i).length() -1) …Run Code Online (Sandbox Code Playgroud) List<?> temp = empObjList.stream()
.filter(nestedDo -> nestedDo.getAttrib1() == "subject")
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这里我调用方法getAttrib1().但是要调用的方法只能动态识别.我将只获得函数的名称作为String值.我想将它动态转换为函数.我知道我可以使用Reflection来进行动态方法调用,但我不能通过反射重写上面的代码.
尝试在Windows 7上使用jtds 1.3 + jdk1.8(64)时出现以下错误.
Exception in thread "main" java.lang.RuntimeException: Error initializing DESEngine
at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:76)
at net.sourceforge.jtds.util.DESEngine.<init>(DESEngine.java:51)
at net.sourceforge.jtds.jdbc.NtlmAuth.answerLmChallenge(NtlmAuth.java:52)
at net.sourceforge.jtds.jdbc.TdsCore.sendNtlmChallengeResponse(TdsCore.java:2179)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:613)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:369)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at test4.Test4.main(Test4.java:15)
Caused by: java.security.NoSuchAlgorithmException: DES SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:69)
... 9 more
Run Code Online (Sandbox Code Playgroud)
示例代码:
public static void main(String[] args) throws Exception {
String url = "jdbc:jtds:sqlserver://server:1433/db1;domain=dm1";
String user = "user";
String pwd = "password";
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection cn = DriverManager.getConnection(url, user, pwd);
System.out.println("connected!"); …Run Code Online (Sandbox Code Playgroud) 我有这个Java 6代码,我想将其转换为Java 8.
BigDecimal sumContributionPercentage = new BigDecimal(0);
if (hasElements(mandateDetails)) {
for (InstrumentMandateDetail mandate: mandateDetails) {
if(!(VERFI_STATUS_CLOSED.equals(mandate.getMandateVerificationStatusType().getCode()) ||
VERFI_STATUS_REJECTED.equals(mandate.getMandateVerificationStatusType().getCode()))) {
sumContributionPercentage = sumContributionPercentage.add(mandate.getContributionPercentage());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个
HashMap<String,Integer> map
Run Code Online (Sandbox Code Playgroud)
我希望按值按降序排序:
HashMap<String,Integer> topSorted = new HashMap<>();
//sort map in descending order
Stream<HashMap.Entry<String,Integer>> st = map.entrySet().stream();
st.sorted(Comparator.comparing((HashMap.Entry<String,Integer> e) -> e.getValue()).reversed())
.forEach(e -> topSorted.put(e.getKey(),e.getValue()));
Run Code Online (Sandbox Code Playgroud)
但topsorted仍然与地图相同,根本没有进行排序
有人可以解释我做错了什么
我正在从Java 6迁移到Java 8,并注意到Comparator接口特有的一些东西.对此的任何见解都会非常有帮助.
当我切换到Java 8时,对象的顺序在"compare"方法内切换,列表排序失败.我回到java 6,它工作得很好.这是一个测试用例,使用Java 8失败了,并且使用了Java 6.
public class ComparitorTest {
@Test
public void comparatorTest(){
Record record1 = new Record("First", false);
Record record2 = new Record("Second", true);
List<Record> list = new ArrayList<Record>();
list.add(record1);
list.add(record2);
final Comparator<Object> recordComparator = new Comparator<Object>()
{
public int compare( Object o1, Object o2 )
{
Record r1 = (Record) o1;
Record r2 = (Record) o2;
Boolean isReadonly_R1 = r1.getIsReadOnly();
Boolean isReadOnly_R2 = r2.getIsReadOnly();
if( isReadonly_R1.equals( Boolean.TRUE ) )
{
return 0;
}
else
{ …Run Code Online (Sandbox Code Playgroud) java-8 ×10
java ×8
java-stream ×4
sorting ×2
collections ×1
collectors ×1
comparator ×1
java-6 ×1
jtds ×1
lambda ×1
list ×1
oracle ×1