code: public void setNumberFormat(String fields, NumberFormat overrideNF) {
          overrideNF.setGroupingUsed(false);
          String nsName = "$" + UUID.randomUUID().toString();
  
          // initialize mapping if not there
          if (numberFormatters == null) {
              numberFormatters = new HashMap<String, NumberFormat>();
          }
          if (overrideMap == null) {
              overrideMap = new HashMap<Character, String>();
          }
  
          // separate string into char and add to maps
          for (int i = 0; i < fields.length(); i++) {
              char field = fields.charAt(i);
              if (DateFormatSymbols.patternChars.indexOf(field) == -1) {
                  throw new IllegalArgumentException("Illegal field character " + "'" + field + "' in setNumberFormat.");
              }
              overrideMap.put(field, nsName);
              numberFormatters.put(nsName, overrideNF);
          }
  
          // Since one or more of the override number formatters might be complex,
          // we can't rely on the fast numfmt where we have a partial field override.
          useLocalZeroPaddingNumberFormat = false;
      }
docs: allow the user to set the NumberFormat for several fields
  It can be a single field like: "y"(year) or "M"(month)
  It can be several field combined together: "yMd"(year, month and date)
  Note:
  1 symbol field is enough for multiple symbol fields (so "y" will override "yy", "yyy")
  If the field is not numeric, then override has no effect (like "MMM" will use abbreviation, not numerical field)
  
  @param fields the fields to override
  @param overrideNF the NumbeferFormat used
  @exception IllegalArgumentException when the fields contain invalid field