SQLであればlimit,offsetを使って取得するデータを絞り込みますが、諸般の事情によりデータを全件取ってきてから並べ替えを行い、その中の一部のデータだけを返す方法です。
ページャーなどでfirstとcountを渡してあげることで、擬似的にlimit,offset的な表示ができます。
全件データを取ってきた上でJavascriptでページャーで切り替える方法もあるので、ケースバイケースかと思います。
2ページ目を表示するときも結局全件データを取ってくる処理をしているのでそれなりに負荷がかかっています。
順番を一意にするため、Collections.sortで並べ替えをしています。
ArrrayList<String> resultList = new ArrrayList<String>(); List<String> usreIds = DataUtils.getAllUserIds(); Collections.sort(usreIds); // 20件ずつ取得 int start = first * count; int end = start + count; for (int i = start; i < end; i++) { if (i < usreIds .size()) { String userId = usreIds.get(i); //ここでuserIdから改めて別のデータを取ってくるのが重い処理だったりするときにデータの件数絞り込みが意義を持ってきます。 resultList.add(userId); } }