コード例 #1
0
  public void Keywords(int page) {

    /**
     * HashTable1 class is responsible for this action. It uses the page number as a keyword and
     * stores all the keywords with that page number Observe the implementation of HashTable1 for
     * further information
     */
    int counter; // number of keywords in the given page

    ListNode result =
        ht1.chainedHashSearch(ht1, page); // find the first occurence of the page number

    if (result != null) { // if not null
      counter = 1;

      while (result.getNext() != null) {

        result = result.getNext();
        if (result.getPage()
            == page) { // if equal to the given page number and not equal to the previous result's
                       // page number
          counter++;
        }
      }

      String kwordArr[] = new String[counter];
      counter = 1;
      result =
          ht1.chainedHashSearch(ht1, page); // again go to the first node with the given keyword
      kwordArr[0] = result.getKeyword();

      while (result.getNext() != null) {

        result = result.getNext();
        if (page
            == result
                .getPage()) { // if equal to the given page number and not equal to the previous
                              // result's page number
          kwordArr[counter] = result.getKeyword();
          counter++;
        }
      }

      this.stringSort(kwordArr); // send the array for sorting

    } else {
      System.out.println("Invalid Page Number");
    }
  }
コード例 #2
0
  public int[] List(String keyword) {
    int counter = 0; // this counts the number of occurrences of the given keyword
    int[] arr; // keeps page numbers of the given keyword
    ListNode result;
    int page; // holds the current page number

    result =
        ht2.chainedHashSearch(
            ht2,
            keyword); // check whether there's at least a single page with the given keyword,if the
                      // node prsent we get the first one,there can be more !!!

    if (result != null) {
      page = result.getPage();
      counter = 1; // found one occurence of the keyword

      // now let's find all the other occurrences of the same keyword
      while (result.getNext() != null) { // iterate through the whole list
        result = result.getNext();
        if (result.getKeyword().equals(keyword) && result.getPage() != page) {
          counter++;
          page = result.getPage();
        }
      }
      // now we know how many pages contain the given key word
      // let's create an array to hold all the page numbers
      arr = new int[counter];

      // let's iterate through the same linked list again to feed the array with page numbers
      counter = 0; // reset to zero again
      result = ht2.chainedHashSearch(ht2, keyword);
      arr[0] = page = result.getPage();
      counter = 1;
      while (result.getNext() != null) {

        result = result.getNext();

        if (result.getKeyword().equals(keyword) && result.getPage() != page) {
          arr[counter] = result.getPage();
          counter++;
        }
      }

      this.sort(arr);
      return arr;
    } else {
      return null;
    }
  }