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
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; }