Как с помощью Stream API вывести все слова по алфавиту и не создавая новый стрим слово которое встречается максимальное кол-во раз

Вот текст в моем файле: “Hello world! Cat is animal. Dog is animal too. Car is not animal.”

import java.io.*; import java.util.Arrays; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream;  public class Main {      public static void main(String[] args) {         try {             File file = new File("D:/test/file.txt");             FileReader fileReader = new FileReader(file);              BufferedReader bufferedReader = new BufferedReader(fileReader);               String line;             while((line = bufferedReader.readLine()) != null) {                 Stream.of(line.split("[^A-Za-zА-Яа-я0-9]+"))                         .map(String::toLowerCase)                         .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))                         .entrySet()                         .stream()                         .sorted(Map.Entry.comparingByKey())                         .forEach(System.out::println);              }              bufferedReader.close(); // закрываем поток         } catch (Exception e) {             e.printStackTrace();         }     } } 

На выходе я получаю строки отсортированные в алфавитном порядке:

animal=3 car=1 cat=1 dog=1 hello=1 is=3 not=1 too=1 world=1

Но я хочу не создавая отдельный стрим (в моем понимании какой-то промежуточной операцией) вывести еще и строку которая встречается наибольшее количество раз, если их несколько вывести их в алфавитном порядке

Выбрать и вывести из строки слова от a до h

Вводится одна строка целиком. Необходимо вывести те слова данной строки, которые начинаются с буквы из интервала от a до h.

Словом считается совокупность букв и символов от пробела до пробела. Слова могут быть как в верхнем, так и нижнем регистре.

Выводить слова необходимо каждый раз с новой строки.

     Пример      Ввод: It becomes dark very fast here      Вывод: becomes             dark             fast             here 

Вроде бы я как я понял, сначала нужно перевести строку в массив строк с помощью регулярного выражения, а затем нужен цикл, в котором перебирая строки в массиве, с помощью charAt() нужно получить первую букву, которую уже проверять на верность условию и если всё ок – выводить. Вот как раз цикл и не могу придумать…подскажите, как лучше его сделать?

    public class TestClass {         public static void main(String[] args) {             Scanner in = new Scanner(System.in);             String s = in.nextLine();             String [] strings = s.split(" ");     System.out.println(Arrays.toString(strings));         // вероятно, здесь должен быть цикл            } } 

все варианты слова в нижнем, верхнем регистре и т.д

есть слово “саша”, как можно реализовать функцию, которая выдаст список всех вариантов написания этого слова? т.е. Саша, САша, САШа, САША, сАША и т.д.

добавление “s” на конце слова в mappedby ведет к ошибке [Hibernate]

Я использую Lombok и пытаюсь создать сущности с аннотациями @ManyToMany bidirectional. Вроде все создается, вроде все работает, но в интернете все пишут, что в mappedBy (см. stockmarket.java) нужно пистать слово во множественном числе (в моем случае – mappedBy=stockmarkets). В тоже самое время программа работает, если я не добавляю s на конце.

Проблема у меня заключается в том, что не работает bidirectional. Т.е. Я нормально добавляю трейдеров со списком бирж внутри в БД, а Биржу со списком трейдеров – не могу. Потому что не могу даже взять данные о трейдерах, подписанные на биржу…

Вот какая ошибка выводится, когда использую s:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-06-16 05:45:52.485 ERROR 4214 --- [           main] o.s.boot.SpringApplication               : Application run failed  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: startApp.bidirectional.ManyToMany.entities.Trader.stockmarkets in startApp.bidirectional.ManyToMany.entities.Stockmarket.traders     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$  doGetBean$  0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]     at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]     at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]     at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]     at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]     at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]     at startApp.Launch.main(Launch.java:18) ~[classes/:na] Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: startApp.bidirectional.ManyToMany.entities.Trader.stockmarkets in startApp.bidirectional.ManyToMany.entities.Stockmarket.traders     at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:785) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.cfg.annotations.CollectionBinder$  1.secondPass(CollectionBinder.java:736) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1696) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1664) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:287) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]     at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57) ~[spring-orm-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390) ~[spring-orm-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377) ~[spring-orm-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1821) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]     ... 16 common frames omitted 

Stockmarket.java:

import lombok.*;  import javax.persistence.*; import java.util.HashSet; import java.util.Set;  @Data @AllArgsConstructor @NoArgsConstructor @Entity @Table(name = "stockmarket") public class Stockmarket{      @Id     @GeneratedValue     @Column(name = "stockmarket_id")     private Long id;      @Column(name = "stockmarket_name")     private String stockmarketName;      @ManyToMany(mappedBy="stockmarket")     private Set<Trader> traders = new HashSet<>();  }  

Trader.java

import lombok.*;  import javax.persistence.*; import java.util.HashSet; import java.util.Set;  @Data @AllArgsConstructor @NoArgsConstructor @Entity @Table(name = "trader") public class Trader {      @Id     @GeneratedValue     @Column(name = "trader_id")     private Long id;      @Column(name = "trader_name")     private String traderName;      @ManyToMany(cascade = { CascadeType.ALL })     @JoinTable(name = "TRADER_STOCKMARKET",             joinColumns = { @JoinColumn(name = "trader_id") },             inverseJoinColumns = { @JoinColumn(name = "stockmarket_id") })     private Set<Stockmarket> stockmarket = new HashSet<>();  } 

Помогите составить программу которая из слова одного может составить множества , на основе русского словаря на python

1) Не могу найти библиотеку для python с русским словарем 2) Не знаю как реализовать подбор слов на основании тех что есть , из словаря.

Как изменить данный код , с использованием библиотек “Русский словарь

import random import math  L=input("enter text: ")  D=list(L)  i=0  Y=[] F=[] l=len(D)  l=math.factorial(l)  while i<l:      random.shuffle(D)      F=(''.join(D))      if F in Y:          continue      else:          Y[len(Y):]=[F]           print (F)         i=i+1 

Поиск слова в строке по букве

Условие: Написать программу, которая ищет в строке, введенной пользователем, и выводит на экран слова, начинающиеся с определенной буквы. Буква вводится пользователем. // Как осуществлять ввод вывод я знаю. Дальше, на сколько я понимаю, нужно посимвольно разбить слова и проверять все символы после пробела и если буква после пробела такая же, как заданная, то выводить все символы до следующего пробела. Но как это всё прописать в коде, я слабо представляю.

Как найти соответствия для слова C#

пишу программу на C#, есть 2 списка(string) слов. В 1 списке русские слова, во 2 английские. После чего эти списки вперемешку(рандомно) заносятся в listbox1(английские) и listbox2(русские). Нужно для соответствующего слова из listbox1 найти перевод в listbox2, каким образом это можно сделать, если элементы списка распределяются рандомно?

Регулярные выражения поиск часто упоминаемого слова

Только не так давно начал работать с регулярными выражениями, как составлять не сложные запросы я разобрался. Сейчас столкнулся с задачей найти в файле самое часто используемое(допустим число). Я ни где не нашёл, что можно при помощи регулярных выражений производить такого рода поиск. Если кто-то сталкивался, подскажите.

Прога должна выводить слова разделенные символами, но если ввести несколько символов подряд, то она их считает за слова

Дана строка, состоящая из слов, разделенных символами, которые перечислены во второй строке. Показать все слова.

Прога должна выводить слова разделенные символами. По одному слову в строке. Однако если ввести несколько символов подряд, то один из них она убирает, а остальные записывает пусто как будто “Найдено слово: “

 /* Пример:     Мама,,мыла.раму      Выводит:      Найдено слово: Мама     Найдено слово:      Найдено слово: мыла     Найдено слово: раму      Должно выводить:     Найдено слово: Мама     Найдено слово: мыла     Найдено слово: раму */  #include <iostream>  #include <string>  using namespace std; int main() {     int a, b, i = 0, c = 0, g = 0, v = 0;     string st;     string r;     string ch = " ";     setlocale(0, "");     cout << "Введите строку: ";     getline(cin, st);     a = st.length();     if (a == 0)     {         cout << "Вы не ввели строку" << endl;     }     else     {         cout << "Введите строку разделителей: ";         getline(cin, r);         b = r.length();         if (b == 0)         {             cout << "Вы не ввели строку " << endl;         }         else         {             while (i != a)             {                 for (int j = 0; j < b; j++)                 {                     if (st[i] == r[j])                     {                         for (g = c; g < i; g++)                         {                             ch += st[g];                         }                         c = g + 1;                         cout << "Найдено слово: " << ch << endl;                         ch = ' ';                     }                 }                 i++;             }             if (c != a)             {                 for (v = c; v < a; v++)                 {                     ch += st[v];                 }             }         }          cout << "Найдено слово: " << ch << endl;     }     return 0; } 

Как сравнить два слова с разным регистром Python 3

Мне дали задачу – написать небольшую программу которая принимает зарание неизвестное количество строк из которых нужно взять слова с заглавными буквами, и впереди указать их порядковый номер через дефис.

Казалось бы дело на минут 40, не больше. Но тут программка неожиданна начала тупить и регисты сравнивать отказалась.

import sys      words = list()     words1 = list()     n = 0      for i in sys.stdin:         i = i.rstrip('\n')         words.append(i)      words2 = [words for words in enumerate(words)]      for j in words2:         if j[1] == j[1][0].upper():             words1.append(j)      #  print(0)     #  print(words1) 

Что я делаю не так?