Java lists manage inserted objects based on their equality (see List JavaDoc). In some instances, it can be confusing that this equality has a different meaning than an equal identity of objects based on their reference.
Here, we would usually expect "1" as result, since the String s2 has been inserted after the String s1 (which should have the index 0). However, Java prints "0" as answer in above example. 0 is returned since the indexOf(…) method only attempts to find an object which is equal to the passed parameter ("one") and not the identical object to the passed object (s2).
But please note that these lists are not part of the Java JRE. Lists are often critical parts of an application (in terms of performance and reliability). Therefore, the best advice might be to tried to work around scenarios as given above, for instance by assigning unique identifiers to objects.