Java 从字谜列表中删除括号
我在移除支架时遇到问题Java 从字谜列表中删除括号,java,Java,我在移除支架时遇到问题 public class Main { public static void main(String[] args) throws IOException { getAnagrams(new InputStreamReader(new URL("http://www.puzzlers.org/pub/wordlists/unixdict.txt").openStream(), StandardCharsets.UT
public class Main {
public static void main(String[] args) throws IOException {
getAnagrams(new InputStreamReader(new URL("http://www.puzzlers.org/pub/wordlists/unixdict.txt").openStream(),
StandardCharsets.UTF_8)).forEach(System.out::println);
}
private static String canonicalize(String string) {
return Stream.of(string.split("")).sorted().collect(Collectors.joining());
}
public static List<Set<String>> getAnagrams(Reader rr) {
Map<String, Set<String>> mapa = new BufferedReader(rr).lines().flatMap(Pattern.compile("\\W+")::splitAsStream)
.collect(Collectors.groupingBy(Main::canonicalize, Collectors.toSet()));
return mapa.values().stream().filter(lista -> lista.size() > 1).collect(Collectors.toList());
}
}
公共类主{
公共静态void main(字符串[]args)引发IOException{
getAnagrams(新的InputStreamReader(新的URL)(“http://www.puzzlers.org/pub/wordlists/unixdict.txt“”。openStream(),
formeach(System.out::println);
}
私有静态字符串规范化(字符串){
返回Stream.of(string.split(“”).sorted().collect(Collectors.joining());
}
公共静态列表getAnagrams(读取器rr){
Map mapa=new BufferedReader(rr).lines().flatMap(Pattern.compile(“\\W+”)::splitAsStream)
.collect(Collectors.groupingBy(Main::canonicalize,Collectors.toSet());
返回mapa.values().stream().filter(lista->lista.size()>1.collect(Collectors.toList());
}
}
输出是
[仓鼠,阿默斯特][生殖器,明胶] 应该是这样 仓鼠阿姆赫斯特
生殖明胶
这是因为
forEach(System.out::println)
在Set
calss中调用toString()
方法
将此方法添加到类中
public static void println(Set<String> items) {
for (String item : items) {
System.out.print(item + " ");
}
System.out.println();
}
这是因为
forEach(System.out::println)
在Set
calss中调用toString()
方法
将此方法添加到类中
public static void println(Set<String> items) {
for (String item : items) {
System.out.print(item + " ");
}
System.out.println();
}
您只需打印出集合,有getAngarams()返回字符串集合列表,有许多方法可以获得不带括号的原始元素,其中一种可能是迭代器: 替换您的:
getAnagrams(new InputStreamReader(new URL("http://www.puzzlers.org/pub/wordlists/unixdict.txt").openStream(),
StandardCharsets.UTF_8)).forEach(System.out::println);
与:
您只需打印出集合,有getAngarams()返回字符串集合列表,有许多方法可以获得不带括号的原始元素,其中一种可能是迭代器: 替换您的:
getAnagrams(new InputStreamReader(new URL("http://www.puzzlers.org/pub/wordlists/unixdict.txt").openStream(),
StandardCharsets.UTF_8)).forEach(System.out::println);
与:
不需要额外的方法,他只需更改他的lambda。是的,谢谢。不需要额外的方法,他只需更改他的lambda。是的,谢谢。