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

DigitalOcean Referral Badge