Я понял это, имея два списка, которые находят значения, а затем объединяют их.
String message = "foo bar "lorem ipsum";
// Getting the value of the quotes
List<String> quotes = new ArrayList<String>();
Matcher m = Pattern.compile("\\\"([^\\\"]*)\\\"")
.matcher(message);
while (m.find()) {
quotes.add(m.group());
}
// Removing quotes from string
message = message.replaceAll("\\\"([^\\\"]*)\\\"", "");
List<String> space = Arrays.asList(message.split("\\s* \\s*"));
// Merging the lists
List<String> newList = Stream.concat(space.stream(), quotes.stream())
.collect(Collectors.toList());
// Printing
System.out.println(newList);