import java.util.*; public class Main { final String strs = "STRING : V\r\n" + "STRING : A\r\n" + "STRING : R\r\n" + "STRING : I\r\n" + "STRING : A\r\n" + "STRING : B\r\n" + "STRING : L\r\n" + "STRING : E\r\n" + "SPACE : null\r\n" + "SPECIAL : null\r\n" + "SPACE : null\r\n" + "NUMBER : 3\r\n" + "NUMBER : 4\r\n" + "SPACE : null\r\n" + "DIV : null\r\n" + "SPACE : null\r\n" + "NUMBER : 5\r\n" + "NUMBER : 6\r\n" + "SPACE : null\r\n" + "QUESTION : null"; final List<ADVAObject> pattern = new ArrayList<>(); pattern.add(new ADVAObject(parts[0], parts[1].equals("null") ? null : parts[1])); } final List<ADVAObject> result = new ArrayList<>(pattern.size()); for (int i = 0, size = pattern.size(); i < size; i++) { final ADVAObject curr = pattern.get(i); if (i == 0 || !pattern.get(i - 1).type.equals(curr.type)) { result.add(curr); } else { result.get(result.size() - 1).value += curr.value; } } } public static class ADVAObject { this.type = type; this.value = value; } @Override StringBuilder builder = new StringBuilder(); builder.append("ADVAObject [type=").append(type).append(", value=").append(value).append("]"); return builder.toString(); } } }
Standard input is empty
Original list: ADVAObject [type=STRING, value=V] ADVAObject [type=STRING, value=A] ADVAObject [type=STRING, value=R] ADVAObject [type=STRING, value=I] ADVAObject [type=STRING, value=A] ADVAObject [type=STRING, value=B] ADVAObject [type=STRING, value=L] ADVAObject [type=STRING, value=E] ADVAObject [type=SPACE, value=null] ADVAObject [type=SPECIAL, value=null] ADVAObject [type=SPACE, value=null] ADVAObject [type=NUMBER, value=3] ADVAObject [type=NUMBER, value=4] ADVAObject [type=SPACE, value=null] ADVAObject [type=DIV, value=null] ADVAObject [type=SPACE, value=null] ADVAObject [type=NUMBER, value=5] ADVAObject [type=NUMBER, value=6] ADVAObject [type=SPACE, value=null] ADVAObject [type=QUESTION, value=null] Combined: ADVAObject [type=STRING, value=VARIABLE] ADVAObject [type=SPACE, value=null] ADVAObject [type=SPECIAL, value=null] ADVAObject [type=SPACE, value=null] ADVAObject [type=NUMBER, value=34] ADVAObject [type=SPACE, value=null] ADVAObject [type=DIV, value=null] ADVAObject [type=SPACE, value=null] ADVAObject [type=NUMBER, value=56] ADVAObject [type=SPACE, value=null] ADVAObject [type=QUESTION, value=null]