>>984
まあ、とりあえずはこんな感じでどう?

final int amount_per_page = 3;
List<String> ns = new ArrayList<>();
List<Integer> q = new ArrayList<>();

int x=0;
for (String name : m.keySet()) {
ns.add(name);
q.add(n.get(name));

// amount_per_page 個ごとに詰め込む
if (++x == amount_per_page) {
pages.add(new Page(ns, q));
ns = new ArrayList<>();
q = new ArrayList<>();
x = 0;
}
}

// 詰め残し
if (ns.size() > 0) {
pages.add(new Page(ns, q));
}

ns = null;
q = null;