Column-by-column GetBulk response

SNMP4J TableUtil supports row-by-row response below and works fine.

mib.47.1.1.1.1.2.1 = 53:48:45:4c:46
mib.47.1.1.1.1.6.1 = -1
mib.47.1.1.1.1.2.2 = 53:4c:4f:54
mib.47.1.1.1.1.6.2 = 1
mib.47.1.1.1.1.2.3 = 45:54:48:45:52:4e:45:54:20:43:41:52:44
mib.47.1.1.1.1.6.3 = 1
mib.47.1.1.1.1.2.4 = 45:54:48:45:52:4e:45:54:20:54:52:41:46:46:49:43:20:50:4f:52:54
mib.47.1.1.1.1.6.4 = 1

Does it support non-standard column-by-column response assuming all data fits in one packet?
NetX SNMP returns the response below:
mib.47.1.1.1.1.2.1 = 53:48:45:4c:46
mib.47.1.1.1.1.2.2 = 53:4c:4f:54
mib.47.1.1.1.1.2.3 = 45:54:48:45:52:4e:45:54:20:43:41:52:44
mib.47.1.1.1.1.2.4 = 45:54:48:45:52:4e:45:54:20:54:52:41:46:46:49:43:20:50:4f:52:54
mib.47.1.1.1.1.6.1 = -1
mib.47.1.1.1.1.6.2 = 1
mib.47.1.1.1.1.6.3 = 1
mib.47.1.1.1.1.6.4 = 1

Sure, column-by-column is directly supported by the GETBULK SNMP PDU type. Thus, for your requirements it is sufficient to send a sing GETBULK PDU with maxRepetitions set to the maximum number of rows in the table.

Easier to use, however, is the TreeUtils.walk method which will provide all rows even if they do not fit in a single response PDU:
https://www.agentpp.com/doc/snmp4j/org/snmp4j/util/TreeUtils.html#walk(org.snmp4j.Target,org.snmp4j.smi.OID[])

Hope this helps?