相关疑难解决方法(0)

使用带有lambda的JDK8压缩流(java.util.stream.Streams.zip)

在带有lambda b93的JDK 8中,b93中有一个类java.util.stream.Streams.zip可用于压缩流(这在教程Exploring Java8 Lambdas中说明.Dhananjay Nene的第1部分).这个功能:

创建一个惰性和顺序组合Stream,其元素是组合两个流的元素的结果.

然而在b98中,这已经消失了.事实上,在b98Streams中的java.util.stream中甚至无法访问该类.

是否已移动此功能,如果是这样,我如何使用b98简洁地压缩流?

我想到的应用程序是在Shen的这个java实现中,我在其中替换了zip中的zip功能

  • static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
  • static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)

具有相当冗长代码的函数(不使用b98中的功能).

lambda functional-programming lazy-evaluation java-8 java-stream

141
推荐指数
9
解决办法
6万
查看次数

什么是zip(函数式编程?)

我最近看到了一些Clojure或Scala(对不起,我不熟悉它们),他们确实在列表或类似的东西上拉链.什么是拉链,它来自哪里?

zip functional-programming clojure

44
推荐指数
5
解决办法
2万
查看次数

Google Guava"zip"两个列表

使用Google Guava(Google Commons),有没有办法将两个大小相同的列表合并到一个列表中,新列表包含两个输入列表的复合对象?

例:

public class Person {
    public final String name;
    public final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return "(" + name + ", " + age + ")";
    }
}
Run Code Online (Sandbox Code Playgroud)

List<String> names = Lists.newArrayList("Alice", "Bob", "Charles");
List<Integer> ages = Lists.newArrayList(42, 27, 31);

List<Person> persons =
    transform with a function that converts (String, Integer) to Person
System.out.println(persons);
Run Code Online (Sandbox Code Playgroud)

输出:

[(Alice, 42), (Bob, 27), (Charles, 31)]
Run Code Online (Sandbox Code Playgroud)

java guava

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

用Java连接向量

是否有任何简单快捷的方法将2个java向量合并为1?

例如,如果我有:

  Vector<Object> Va = (Vector<Object>)Return_Vector_with_Objs();
  Vector<Object> Vb = (Vector<Object>)Return_Vector_with_Objs();

  Vector<Object> Vmerge_a_b = function_that_takes_a_b_merges(Va,Vb);
Run Code Online (Sandbox Code Playgroud)

有没有像function_that_takes_a_b_merges这样的函数或合并这两个向量的简单方法?

我不想用循环和add()等来做.我问是否有更快的方法.

编辑:我也希望排除重复的对象.

java merge vector

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

new Java对象列表,匹配另外两个列表中的条目

假设我有这两个列表

List<Person> persons = Arrays.asList(
                new Person(1, "Mike", "Canada"),
                new Person(2, "Jill", "England"),
                new Person(3, "Will", "Whales"),
                new Person(4, "Mary", "Spain"));


List<Metadata> metadata= Arrays.asList(
                new metadata(1, "2000-01-01", "Naturalized", "Bachelor's of Arts"),
                new metadata(2, "2001-01-01", "ExPat", "Masters of Chemestry"),
                new metadata(3, "2017-05-01", "Citizen", "Buiness Management"),
                new metadata(4, "2018-04-16", "Work Visa", "Nursing"));
Run Code Online (Sandbox Code Playgroud)

最终结果是新列表:

List<PersonWithMetadata> personsAndMEtadata = Arrays.asList(
                new PersonWithMetadata(1, "Mike", "Canada", "2000-01-01", "Naturalized", "Bachelor's of Arts"),
                new PersonWithMetadata(2, "Jill", "England", "2001-01-01", "ExPat", "Masters of Chemestry"),
                new PersonWithMetadata(3, "Will", "Whales", "2017-05-01", "Citizen", "Buiness …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

Java 流 (forEach) 从一个列表中获取属性并应用于另一个

我有一个简单的类:

public class Thing {

  Long id;
  String color;
  String size;

}
Run Code Online (Sandbox Code Playgroud)

我有两个List<Thing>看起来像这样的对象:

List<Thing> colors = [{2, red}, {3, blue}];
List<Thing> sizes = [{2, small}, {3, large}];
Run Code Online (Sandbox Code Playgroud)

使用 Java 流 / forEach,我如何将一个“流”到另一个中以达到:

List<Thing> things = [{2, red, small}, {3, blue, large}]
Run Code Online (Sandbox Code Playgroud)

java foreach java-stream

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