0

I got errors when compiling this:

TreeMap <String, Long> myMap = new TreeMap <String, Long>();
//populate the map
myMap.put("preload_buffer_size", 1024);
myMap.put("net_buffer_length", 1024);
//etc...


error: no suitable method found for put(String,int)
    myMap.put("preload_buffer_size", 1024);
         ^
method TreeMap.put(String,Long) is not applicable
  (actual argument int cannot be converted to Long by method invocation conversion)
method AbstractMap.put(String,Long) is not applicable
  (actual argument int cannot be converted to Long by method invocation conversion)

And I need to use Long, not int I don't really know how to resolve it, I would appreciate if you could help me with this.

jbindel
  • 5,535
  • 2
  • 25
  • 38
user3344382
  • 1,941
  • 4
  • 18
  • 17

3 Answers3

1
myMap.put("preload_buffer_size", 1024L);
Lee
  • 142,018
  • 20
  • 234
  • 287
1

You are trying to put a String key with an Integer value (in its primitive form int) into a map which you designated as a String to Long map. So it only accepts

myMap.put(String, Long);

By adding an "L" to your number, the compiler will recognize it as being a Long instead of the default Integer.

so thatÅ› why the following would be the solution:

myMap.put("preload_buffer_size", 1024L);
bknopper
  • 1,193
  • 12
  • 28
1

The problem is that you are trying to place a numeric literal in a map having String as key, Long as value. By default in java the numerical literals are int's so either write:

 TreeMap <String, Long> myMap = new TreeMap <String, Long>();
 //populate the map
 myMap.put("preload_buffer_size", 1024L);
 myMap.put("net_buffer_length", 1024L);

or

TreeMap <String, Long> myMap = new TreeMap <String, Long>();
//populate the map
myMap.put("preload_buffer_size", new Long(1024));
myMap.put("net_buffer_length", new Long(1024));
Olimpiu POP
  • 5,001
  • 4
  • 34
  • 49