小编Stu*_*rks的帖子

如何检查Stream <String>是否包含Java 8中的另一个Stream <String>

我创建了两个Stream

Stream<String> first= ...
Stream<String> second= ...
Run Code Online (Sandbox Code Playgroud)

他们俩都有数字.假设第一个文件有1到1000而第二个文件有25到35.我想检查第一个文件是否包含秒数的数字.

first.filter(s-> !s.contains(second.toString())
     .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

如果我second.toString()用"10" 替换它然后它可以工作,但我如何检查整个流而不仅仅是字符串或字符串?

java functional-programming java-8 java-stream

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

直接从字符串创建流

我们可以像这样从字符串List创建流

    List<String> list = Arrays.asList("somestring");
    Stream<String> stream = list.stream();
Run Code Online (Sandbox Code Playgroud)

但是如何直接从字符串创建流.

String x = "somestring";
Run Code Online (Sandbox Code Playgroud)

java string java-8 java-stream

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

Java 8如何流到数组大小的工作原理?

String[] stringArray = streamString.toArray(size -> new String[size]);
Run Code Online (Sandbox Code Playgroud)

如何自动将大小视为流的大小?

java-8 java-stream

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

Java8 list <T>列出<object []>

如何使用流解析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 []

java list java-8 java-stream

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

Java 8 Streams修改集合值

使用流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)

java java-8 java-stream collectors

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

为什么我可以在没有stream() - 方法的类的对象上调用stream()方法?

我是大学新手Java程序员.我今天发现了一些关于Java语法如何工作的概念.

public class testClass {

ArrayList <String> persons = new ArrayList <String> ();

public void run(){
    Stream <String> personstream = persons.stream();
}}
Run Code Online (Sandbox Code Playgroud)

stream()ArrayList类中找不到该方法,但它可能看起来好像在那里.当我将鼠标移到stream()Eclipse中的-method上时,它表示它是Collections的一部分,但我stream()在其在线文档中找不到任何方法.

stream()如果它不是我从中调用它的类的一部分,为什么调用该方法呢?

java collections syntax java-stream

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

为什么Java 8中的IntStream.range(0,n)不应该是并行的?

我已经阅读了一本关于Java 8的书,该书说使用并行流来获取数字的范围IntStream.range(0,someNumber)可能比连续的慢...为什么?

java java-8 java-stream

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

Java Lambda表达式

我目前正在JDK 1.8上学习lambda表达式.我遇到了一些我发现我不理解的代码.

这是代码:

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.lang.Comparable;

/**
 * Hello world!
 *
 */
public class App
{
    public static void main( String[] args ) throws Exception
    {

        List<String> list = Arrays.asList("a", "b", "c");
        sort(list, Comparable::<String>compareTo);

    }

    interface MyComparable {
        public <T extends Comparable<T>> int compare(T obj1, T obj2 );
    }

    public static <T extends Comparable<T>> void sort(List<T> list, MyComparable comp) {

        int n = comp.compare("5","2");
        System.out.println(n);
    }

}
Run Code Online (Sandbox Code Playgroud)

comp.compare("5", "3")最终执行"5".compareTo("2").我的理解是编译器需要找到一个具有相同签名的静态方法

public <T extends …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 method-reference

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

Java 8比较方法违反了比较器中的一般合同问题

虽然我使用下面的比较器来对我正在获得的对象进行排序比较方法违反了比较器中的一般合同问题.

final Set<Span> set = new TreeSet<Span>(new Comparator<Span>() {

        public int compare(final Span firstSpan, final Span secSpan) {
            BigInteger s1X0 = firstSpan.getCoordinates().getX0();
            BigInteger s1X1 = firstSpan.getCoordinates().getX1();
            BigInteger s2X0 = secSpan.getCoordinates().getX0();
            BigInteger s2X1 = secSpan.getCoordinates().getX1();

            BigInteger s1Y0 = firstSpan.getCoordinates().getY0();
            final BigInteger s2Y0 = secSpan.getCoordinates().getY0();

            if(s1X0.intValue() == s2X0.intValue() && s1X1.intValue() == s2X1.intValue() && s1Y0.intValue() == s2Y0.intValue()){
                return 0;
            }
            if ((s1Y0.intValue() - s2Y0.intValue() <= 5) && (s1Y0.intValue() - s2Y0.intValue() >= -5)) {
                return (s1X0.intValue()>s2X0.intValue()) ? 1 : -1;
            } else {
                if …
Run Code Online (Sandbox Code Playgroud)

java sorting comparator java-8

-4
推荐指数
1
解决办法
953
查看次数