There are chips that are constant current drive for LEDS, usually for long strings of LEDS or those running on a 12 volt supply, usually they are switching types and so more efficient. Look up LED drivers.
Using a transistor as a constant current device works well if the voltage is high enough compared to the load. Also the higher gain device the better. BTW You could use the Arduino to provide a constant current by including it in the control loop. This would allow you to try different currents without rewiring. It will be a PWM output with a analog input from a resistor in series with the LED (S). You will need to put a filter ( resistor /cap ) at the analog input.