I would try something as:

    int index = 0;
    ProfileFieldLevelSecurity [] fieldArray = new ProfileFieldLevelSecurity [updateReadList.length];
    
    for(String field:updateReadList) {      
        ProfileFieldLevelSecurity fieldSec = new ProfileFieldLevelSecurity();

        fieldSec.setField(field);
        fieldSec.setReadable(true);
        fieldSec.setEditable(false);
        
        fieldArray[index++] = fieldSec; // add all the FLS attributes to an array
    }

    admin.setFieldPermissions(fieldArray); // set field permissions out of the loop
    api.updateMetadata(new Metadata[] {admin}); // call the udpate in bulk