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