2017-09-11 107 views
-1

我嘗試在我的迭代器中實現hasNext()方法。如何將char []數組的內容添加到新的char []字母中? - java

public boolean hasNext() { 
     filename = this.fileContent.getFileName(); 
     int charLineSize = 0; 
     Scanner in = null; 
     ArrayList<Character> charList = new ArrayList<> 

     try(Scanner scanner = new Scanner(new BufferedReader(new FileReader(filePath)))) { 

      while (scanner.hasNextLine()) { 
       String line = scanner.nextLine(); 
       charLineSize = line.split("\\s+").length; 
       String wordsline = line.split("\\s+").toLowerCase(); 
       charList.addAll(new ArrayList<>(wordsline.chars().mapToObj(c -> (char) c).collect(Collectors.toList()))); 
      } 
     } catch(FileNotFoundException e) { 
      System.out.println(e); 
     } 
     if (index < charLineSize) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public String next() { 
     if (hasNext()) { 
      return charList.get(index++); 
     } else { 
      return null; 
     } 
    } 

首先,我在這裏將字符分割爲字符。將所有字符存儲在charList中並在掃描程序遍歷每行後更新它是否正確?

我想在Next()方法中獲取特定的char。

+0

你爲什麼不直接分割線的字符,並把他們的的char []數組中使用.toCharArray()? – Debabrata

回答

0

如何將它們分成字符?

使用line.toCharArray()

其次,當我這樣做,如何添加的信件內容爲char []每行之後陣?

不能。一旦創建了一個數組,你就不能改變它的大小。這意味着您需要事先知道字符的總數量,這可能並非如此。

聲明array作爲您可以撥打array.add(char)的字符列表。

List<Character> array = new ArrayList<>(); 
+0

好的。但如何做到這一點?如何將數組聲明爲可以在其上添加字符的字符列表?重點是我需要將字符存儲在列表中,並能夠逐行添加新字符。然後在Next()方法中,我必須能夠根據索引返回字符。 – JeyKey

+0

謝謝。我將如何能夠通過索引從列表中獲取特定字符? – JeyKey

+0

@JeyKey在列表中你可以做'list.get(index)'。 https://docs.oracle.com/javase/7/docs/api/java/util/List.html#get(int) –

0

要轉換爲字符數組,並添加內容,您可以使用以下方法:

  1. 轉換爲字符數組:

    line.toCharArray()

  2. 充分利用列表char array:

    ArrayList<Character> charList = new ArrayList<>(line.chars().mapToObj(c -> (char) c).collect(Collectors.toList()));

  3. 要添加內容:

    charList.add(c);

+0

謝謝。但是如何在每行之後添加此內容?這裏我在charList的聲明中做了一次。 – JeyKey

+0

爲此,您可以使用'charList.addAll(new ArrayList <>(line.chars()。mapToObj(c - >(char)c).collect(Collectors.toList())));' –

+0

但是exaclty ?請再次查看我的代碼。我更新了它。 現在應該是這樣嗎?內部while循環結束?: charList.addAll(new ArrayList <>(words.chars()。mapToObj(c - >(char)c).collect(Collectors.toList()))); – JeyKey

相關問題