Bouts de codes Java qui reviennent assez souvent

Je mets ici quelques conversions de types et quelques bouts de codes utilisés très fréquemment, et que je suis à chaque fois obligé d’aller chercher sur StackOverflow. Donc autant les rassembler ici.

Convertir un Float en Double :

Double monDouble = Double.valueOf(monFloat);

Convertir un Float en BigDecimal :

BigDecimal value = new BigDecimal(Float.toString(123.4f));

(Ci-dessous, à ne pas faire (cf ici)) :

BigDecimal bd = BigDecimal.valueOf(f);

Et Double vers BigDecimal (choisir le MathContext que l’on veut) :

BigDecimal b = new BigDecimal(d, MathContext.DECIMAL64);

List vers String[] :

List<String> list = ..;
String[] array = list.toArray(new String[0]);

String[] vers List :

List<String> myList = Arrays.asList(myArray);

Convertir un Array en Set :

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));

Convertir un Set en List :

List<?> list = new ArrayList<?>(set);

Comment trier une liste d’Integer en fournissant un Comparator (tri ascendant) :

Collections.sort(input, new Comparator<Integer>() {@Override public int compare(Integer left, Integer right) { return left > right ? 1 : -1;}});

Pour le tri descendant il suffit de changer le « > » par le « <". Comment inverser l’ordre d’une liste :

Collections.reverse(list);

Supprimer un élément d’une liste via une boucle For :

for (Iterator<String> iter = list.listIterator(); iter.hasNext(); ) {
    String a = iter.next();
    if (...) {
        iter.remove();
    }
}

Comment convertir une date en String :

Date st= new Date(maDate);
String maDateEnString = new SimpleDateFormat("yyyy-MM-dd").format(dt);

Comment obtenir juste les deux derniers chiffres de l’année en cours :

return (new SimpleDateFormat("yy")).format(Calendar.getInstance().getTime());

Créer une date très rapidement (sans se préoccuper des locales) :

Date coolDate = new GregorianCalendar(year, month, day).getTime();

Incrémenter un Calendar d’exactement un jour :

cal.add(Calendar.DATE, 1);  // number of days to add

Convertir une date en Calendar

public static Calendar DateToCalendar(Date date){ 
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  return cal;
}

Sélectionner un élément aléatoire d’une liste :

private <T extends Serializable> T selectRandomFromList(List<T> inputList){
   Random randomGenerator = new Random();
   int index = randomGenerator.nextInt(inputList.size());
   return inputList.get(index);
}

Comment obtenir un synchronize lock par input différent envoyé dans une méthode :

    private ConcurrentHashMap<String, Object> objectLockMap = new ConcurrentHashMap<String, Object>();
    private Object getObjectLock(String input){
        if(objectLockMap.get(input) == null){
            objectLockMap.putIfAbsent(input, new Object());
        }
        return objectLockMap.get(input);
    }

    public List<User> getUsersFromDate(String date) {
        List<User> userList = new ArrayList<User>();
        synchronized (getObjectLock(date)){
            userList = userDao.getUserListFromDate(date);
        }
        return userList;
    }

Générer toutes les permutations d’un set :

  public List<List<E>> generatePerm(List<E> original) {
     if (original.size() == 0) { 
       List<List<E>> result = new ArrayList<List<E>>();
       result.add(new ArrayList<E>());
       return result;
     }
     E firstElement = original.remove(0);
     List<List<E>> returnValue = new ArrayList<List<E>>();
     List<List<E>> permutations = generatePerm(original);
     for (List<E> smallerPermutated : permutations) {
       for (int index=0; index <= smallerPermutated.size(); index++) {
         List<E> temp = new ArrayList<E>(smallerPermutated);
         temp.add(index, firstElement);
         returnValue.add(temp);
       }
     }
     return returnValue;
   }

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.