Display Page list
实现分页显示。给了以下一些输入数据,要求将以下行分页显示,每页12行,其中每行已经按score排好序,分页显示的时候如果有相同host id的行,则将后面同host id的行移到下一页。
import java.io.;
import java.util.;
class Solution {
public static void main(String[] args) {
List input = new ArrayList<>();
input.add("1,28,300.1,SanFrancisco");
input.add("4,5,209.1,SanFrancisco");
input.add("20,7,208.1,SanFrancisco");
input.add("23,8,207.1,SanFrancisco");
input.add("16,10,206.1,Oakland");
input.add("1,16,205.1,SanFrancisco");
input.add("6,29,204.1,SanFrancisco");
input.add("7,20,203.1,SanFrancisco");
input.add("8,21,202.1,SanFrancisco");
input.add("2,18,201.1,SanFrancisco");
input.add("2,30,200.1,SanFrancisco");
input.add("15,27,109.1,Oakland");
input.add("10,13,108.1,Oakland");
input.add("11,26,107.1,Oakland");
input.add("12,9,106.1,Oakland");
input.add("13,1,105.1,Oakland");
input.add("22,17,104.1,Oakland");
input.add("1,2,103.1,Oakland");
input.add("28,24,102.1,Oakland");
input.add("18,14,11.1,SanJose");
input.add("6,25,10.1,Oakland");
input.add("19,15,9.1,SanJose");
input.add("3,19,8.1,SanJose");
input.add("3,11,7.1,Oakland");
input.add("27,12,6.1,Oakland");
input.add("1,3,5.1,Oakland");
input.add("25,4,4.1,SanJose");
input.add("5,6,3.1,SanJose");
input.add("29,22,2.1,SanJose");
input.add("30,23,1.1,SanJose");
Set<String> visited = new HashSet<>();
Iterator<String> iterator = input.iterator();
int pageNum = 1;
System.out.println("Page " + pageNum);
while (iterator.hasNext()) {
String curr = iterator.next();
String hostId = curr.split(",")[0];
if (!visited.contains(hostId)) {
System.out.println(curr);
visited.add(hostId);
iterator.remove();
}
// New page
if (visited.size() == 12 || (!iterator.hasNext())) {
visited.clear();
iterator = input.iterator();
if (!input.isEmpty()) {
pageNum++;
System.out.println("Page " + pageNum);
}
}
}
}
}
Hope this helps,
Michael