flatMap is your friend here:
models .stream() .flatMap(model -> Stream.of(model.getStringA(),model.getStringB())) .collect(Collectors.toList());
flatMap accepts Type R and expects to Stream (from the list, collections, Array) a new type of RR ago. For each model 1 you get n new elements (in this case, StringA and StringB ):
{model_1[String_A1,String_B1] , model_2[String_A2,String_B2] , model_3[String_A3,String_B3]}
All your items are n { [String_A1,String_B1], [String_A2,String_B2],[String_A3,String_B3]}
then flattened, which are placed in a new thread with a structure
{String_A1,String_B1,String_A2,String_B2,String_A3,String_B3}
of type String. It's like you have a new stream.
You can use flatMap , for example, when you have many collections / streams of elements that need to be combined into only one. For simpler explanations check this answer