Thursday, December 15, 2016

Is PriorityQueue sorted?

PriorityQueue is not sorted. It is guaranteed that only the first element is "sorted" (PriorityQueue is specified only to return lowest element every time head is requested). The whole queue could be sorted, but this is not guaranteed.

So PriorityQueue iterator returns elements in any order, not in sorted order. Assuming sorted order is a common bug.

Monday, November 21, 2016

++ operator on variable used multiple times in single line

Write the output of this code:
        long l = 10;
        System.out.println( "l " + l++ + "; " + l );


Result:
l 10; 11


Tuesday, May 10, 2016

Java: Variables in interfaces

Concept of variables in interfaces is allowed in Java, but the concept is different. Variables defined in interfaces are always static and final.

Check this for more details.

Wednesday, May 4, 2016

Java syntax hack

These are equivalent code segments:

Hacky syntax:

Map map = new HashMap() {{
   put("key", "value");
}};

Normal syntax:

Map map = new HashMap();
map.put("key", "value");

Decryption of encrypted syntax

First set of braces is the anonymous inner class (subclassing HashMap). The second set of braces is an instance initializer (rather than a static one) which then sets the values on your HashMap.

Usages

This hacky syntax could be used gracefully when initializing a class member. This way you will avoid adding code to constructor(s) or in static initializer of the class.

Anonymous class that “extends” other class or “implements” some interface in Java?

Anonymous classes in Java are defined in this way:

Syntax for implementing some interface:
Runnable r = new Runnable() {
   public void run() { ... }
};

Syntax for extending other class (is the same):
SomeClass x = new SomeClass() {
   ...
};


Thursday, January 14, 2016

Brief view in JAX-RS (Java API for RESTful Web Services)

What is JAX-RS

Java API for RESTful Web Services (JAX-RS) is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern.

JAX-RS is an official part of Java EE 6.

Annotations in JAX-RS 

JAX-RS uses these annotations:
 In addition, it provides further annotations to method parameters:
  • @PathParam binds the method parameter to a path segment.
  • @QueryParam binds the method parameter to the value of an HTTP query parameter.
  • @MatrixParam binds the method parameter to the value of an HTTP matrix parameter.
  • @HeaderParam binds the method parameter to an HTTP header value.
  • @CookieParam binds the method parameter to a cookie value.
  • @FormParam binds the method parameter to a form value.
  • @DefaultValue specifies a default value for the above bindings when the key is not found.
  • @Context returns the entire context of the object (for example @Context HttpServletRequest request).
 Source: wikipedia