Когда решал задачу на максимальное кол-во, так и не понял что происходит в данной строчке?
countArray[fileInputStream.read()] = countArray[fileInputStream.read()] + 1;
И почему создается массив countArray именно на 256 элементов? Каждый его элемент постоянно равен нулю же
package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
int[] countArray = new int[256];
ArrayList<Integer> list = new ArrayList<>();
FileInputStream fileInputStream = new FileInputStream("c:/test/number.txt");
while (fileInputStream.available() > 0) {
countArray[fileInputStream.read()] = countArray[fileInputStream.read()] + 1; //Кто-нибудь может подсказать что происходит тут?
}
/* for (int k: countArray){
System.out.println(k);
} */
int minCount = Integer.MAX_VALUE; // максимальное значение инт
for (int byteCount : countArray) { //просто добавили переменную bytecount, которая будет равна каждому элементу массива countArray
if (byteCount > 0 && byteCount < minCount) { // если элемент массива countaArray > 0 и меньше чем переменная int count
// которая меду прочем равна максимальному числу инт, то
minCount = byteCount; // минимальное число minCount = bytecount;
}
}
for (int i = 0; i < countArray.length; i++) {
if (countArray[i] == minCount) {
list.add(i);
}
}
for (Integer x : list) {
System.out.print(x + " ");
}
}
}