在带有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
我最近看到了一些Clojure或Scala(对不起,我不熟悉它们),他们确实在列表或类似的东西上拉链.什么是拉链,它来自哪里?
使用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) 是否有任何简单快捷的方法将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()等来做.我问是否有更快的方法.
编辑:我也希望排除重复的对象.
假设我有这两个列表
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) 我有一个简单的类:
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)