List<String> list =new ArrayList<>();
list.add("abcd");
list.add("afsd");
list.add("addd");
Map<String, List<Person>> ordersByInstrumentId = findService.findAllUsers(**list.get(0)**)
.stream()
.collect(Collectors.groupingBy(Dummy::getId, Collectors.toList()))
Run Code Online (Sandbox Code Playgroud)
我的方法findAllUsers将String作为参数.我想用迭代替换list.get(0),因此它将为每个元素调用函数并存储在Map中.我尝试了list.foreach,但它返回void,所以没用
如何使用数组流计算字符串中的字频?我正在使用Java 8.
这是我的代码:
String sentence = "The cat has black fur and black eyes";
String[] bites = sentence.trim().split("\\s+");
String in = "black cat";
Run Code Online (Sandbox Code Playgroud)
计算句子中的单词"black"和"cat"频率.单词"黑色"频率为2,单词"cat"为1.
那么目标输出就是3.
所以我有一个Map<String, Map<String, Integer>>,我想将它转换为一个 Map<Integer, Map<String, Integer>>字符串键被替换为地图中的索引(0,1,2,.....).我知道指数在地图中不准确但在我的情况下并不重要.我尝试使用AtomicInteger作为索引,在流上的每个操作后递增但我无法解决问题....
我是java的新手.我正在尝试从包含showNames的流创建一个HashMap.我的问题是,名称可能是重复的,它们可能会出现多次,这意味着它们必须映射到相同的键上,我在映射后尝试使用过滤器,但我不确定要放置什么条件.X-> x.equals(x)的?流showNames的外观如下:
LOTR,Lucifer,Breaking Bad,LOTR,Exorcist,The Godfather,The Godfather,Lucifer,等等
哈希映射应该具有显示名称的键,以及字符串在流中显示的时间值
我需要从给定的超级列表中获取子列表,如下所述.
假设我有一个"Person"对象的超级列表,如下所示:
List<Person> personsList = new ArrayList<>();
personsList.add(new Person("John", 28));
personsList.add(new Person("Paul", 29));
personsList.add(new Person("Adam", 30));
personsList.add(new Person("Peter", 31));
personsList.add(new Person("Kate", 32));
personsList.add(new Person("John", 67));
personsList.add(new Person("Paul", 68));
personsList.add(new Person("Adam", 69));
Run Code Online (Sandbox Code Playgroud)
让Person类定义如下:
class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ": " + age;
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用Java Streams API,如何获取包含以下条目的子列表(请注意,必须获取具有相同名称的对象的重复实例):
John : 28
John : 67
Paul : 29 …Run Code Online (Sandbox Code Playgroud) 我正在阅读java 8,并且作者说如果你有一个覆盖toString方法的类,那么在进行collect(joined())时你不需要将流映射到字符串.一个例子:
public static void main(String... args) {
List<Person> people =
Arrays.asList(
new Person(23, "Paul"),
new Person(23, "John"),
new Person(23, "Greg"),
new Person(24, "Greg"),
new Person(25, "Paul")
); // Person overrides toString
String peopleString = people
.stream()
.collect(Collectors.joining());
System.out.println(peopleString);
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,只有这样:
String peopleString = people
.stream()
.map(Person::toString)
.collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)
工作,所以这本书错了吗?此外,为什么他说(我改变了一点措辞):
另请注意,如果某个类有一个toString方法返回一个字符串,您将获得相同的结果,而无需使用提取名称的函数映射原始流.
当每个对象应该继承toString的Object?
我不知道Stream API的所有功能.
我的任务是:我有一个带有url的字符串列表,我有两个方法的自定义对象列表
String videoFromUrl(String url);
boolean support(String url);
Run Code Online (Sandbox Code Playgroud)
我应该从第一个列表中选择一个url,该列表将由第二个列表的一个实例支持,然后返回转换后的url
我的代码是:
@Override
protected String videoSourceFromDocument(final Document document) {
final List<String> hrefs = ...;
for (final String href : hrefs) {
final Optional<VideoDownloader> videoDownloader = this.videoDownloaders/*this is my second list*/
.stream()
.filter(dwnldr->dwnldr.support(href))
.findFirst();
if(videoDownloader.isPresent()){
return videoDownloader.get().videoFromUrl(href);
}
}
this.logger().warn("Url {} doesn't has video source",document.baseUri());
throw new IllegalArgumentException();
}
Run Code Online (Sandbox Code Playgroud)
是使用Stream API重写它的更好方法吗?
我想将对象列表转换为Map,
我正在尝试使用Java 8的流API来实现,
但遇到2个错误,其中1个是导入错误,1个是List到Map的转换代码。
导入地图界面时出错-
The import java.util.Map conflicts with a type defined in the same file.
转换码错误-
The type Map is not generic; it cannot be parameterized with arguments <String, BigDecimal>
Run Code Online (Sandbox Code Playgroud)
以下是我的代码-
public class Developer {
private String name;
private BigDecimal sal;
private int age;
/**
* @param name
* @param sal
* @param age
*/
public Developer(String name, BigDecimal sal, int age) {
super();
this.name = name;
this.sal = sal;
this.age = age;
}
/**
* @return the …Run Code Online (Sandbox Code Playgroud) 我正在寻找一些帮助将对象列表转换为Map<String, List<String>>.
class Person {
private String name;
private int age;
}
Run Code Online (Sandbox Code Playgroud)
我有一个List<Person>,我想收集Map<int, List<String>>关键是年龄和价值是同龄人的名单.
我试过这些线但是没有用
persons.stream().collect(Collectors.groupingBy(p -> p.getAge()), );
Run Code Online (Sandbox Code Playgroud) 我正在努力拓宽我的Java视野并开始实际编写Java 8+代码.我有一个情况,我有一个POJO列表(每个POJO实例都有一个id : Long字段),我需要生成一个List<Long>代表他们所有的ids.这是我的代码完美无缺:
List<Fizzbuzz> fizzbuzzes = getFizzbuzzes();
List<Long> fbIds = new ArrayList<>();
for(Fizzbuzz fb : fizzbuzzes) {
fbIds.add(fb.getId());
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更"现代"的Java 8+方式(lambdas或集合技巧,流媒体等)来编写这段代码.任何想法还是这样的好事?