With Enums, you can have a method per instance.  
public enum ActionEnum {
   ABC {
      @Override
      void doSomething() {
          System.out.println("Doing something for ABC");    
      }
   },
   XYZ {
      @Override
      void doSomething() {
         System.out.println("Doing something for XYZ"); 
      }
   };
   abstract void doSomething();
}
public class MyActionClass {
    public void myMethod(String name) {
        ActionEnum.valueOf("ABC").doSomething();
    }
}
It is still kinda messy (big enum with 100+ entries, even it all it does is dispatching), but may avoid the HashMap initialization code (100+ puts is also messy in my opinion). 
And yet another option (for documentation purposes) would be reflection: 
public interface Action {
    void doSomething();
}
public class ABCAction implements Action {
    @Override
    public void doSomething() {
        System.out.println("Doing something for ABC");      
    }
}
public class MyActionClass {
    void doSomethingWithReflection(String name) {
        try {
            Class<? extends Action> actionClass = Class.
                forName("actpck."+ name + "Action").asSubclass(Action.class);
            Action a = actionClass.newInstance();
            a.doSomething();
        } catch (Exception e) {
            // TODO Catch exceptions individually and do something useful. 
            e.printStackTrace();
        }
    }
}
Each approach has it's trade offs:
- HashMap = Fast + Kinda messy ("set-up" code with hundred of puts)
- Enum = Fast + Kinda messy 2 (huge file).
- Reflection = Slower + runtime error prone, but provides clean separation without resorting to clunky big HashMap.