String[] array = {"name", "Ivanov", "country", "Ukraine", "city", "Kiev", "age", null};
Map<String, String> map = Stream.iterate(
Arrays.asList(array), list -> list.subList(2, list.size()))
.limit(array.length / 2)
.collect(Collectors.toMap(
list -> list.get(0) == null ? "null" : list.get(0),
list -> list.get(1) == null ? "null" : list.get(1),
(x, y) -> y, LinkedHashMap::new));
map.entrySet().forEach(System.out::println);
static long repeatedString(String s, long n) {
/* Кол-во повторов в исходной строке */
int rep = (int) s.toLowerCase()
.chars()
.filter(c -> c == 'a').count();
/* Кол-во циклов, в которых исходная строка будет полностью скопирована */
long cycles = (n / s.length()) - 1;
/* Кол-во повторов в остаточной строке, которой не хватило на полный цикл */
int remainder = (int) s.toLowerCase()
.substring(0, (int) n % s.length())
.chars()
.filter(c -> c == 'a').count();
return rep * cycles + remainder + rep;
}
Зачем считывать файл через Scanner?
Зачем использовать цикл? нельзя взять и всю прочитать без цикла?
Зачем строке происваевать данные файла?
fromJson
мы сохраняем прочитанные данные, а поскольку JSON представляет собой обычный набор текста, то использование типа String более чем подходит для этой операции. Вы также можете использовать коллекции или массивы для этого.Зачем указывать тип объекта в конце?
fromJson
десериализует JSON, прочитанный из Reader'а (в данном случае из строки) в объект класса, указанного вторым аргументом.public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
int[] result = IntStream.rangeClosed(1, array.length)
.map(i -> array[array.length - i])
.toArray();
System.out.println(Arrays.toString(result));
}
public static void main(String[] args) {
Integer[] array = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(array);
Collections.reverse(list);
System.out.println(Arrays.toString(list.toArray()));
}
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
for (int i = 0; i < array.length / 2; i++) {
int tmp = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = tmp;
}
}
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
getPrincipal()
getCredentials()
getAuthorities()
getDetails()
public String foo(Model model) {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String username = user.getUsername();
model.addAttribute("username", username);
return "your_view";
}
<td th:each="user : ${user}">
<a th:if="${username == user.username}" th:href="@{/profile/{id}(id=${user.id}}">Profile</a>
</td>
%1$s
и использовать String.format
для замены плейсхолдеров на фактическую строку, которую вам нужно использовать.public class Main {
public static final String DELIMITER = "((?<=%1$s)|(?=%1$s))";
public static void main(String[] args) {
String task = "Заменить, в тексте все! слова длиной? не больше 6 символов; в обратном порядке начинающиеся на: согласную букву ";
String[] arr = task.split(String.format(DELIMITER, "[:?;!. ]"));
String result = Arrays.stream(arr)
.map(s -> !check(s.charAt(0)) && !length(s) ? reverse(s) : s)
.collect(Collectors.joining());
System.out.println(result); /* Заменить, в етскет есв! аволс йонилд? ен ешьлоб 6 символов; в обратном порядке начинающиеся ан: согласную увкуб */
}
public static boolean check(char c) {
return "аиеёоуыэюя".indexOf(c) > -1;
}
public static boolean length(String s) {
return s.length() > 6;
}
public static String reverse(String s) {
return new StringBuilder(s).reverse().toString();
}
}
git checkout <your_commit_sha>
git checkout -b old-state <your_commit_sha>
checkout
ветку, в которой вы были. (Если вы внесли изменения, при переключении веток, вам придется обращаться с ними соответствующим образом.# Это создаст три отдельных коммита возврата:
git revert <your_commit_sha1> < your_commit_sha2> <your_commit_sha3>
# Это вернет последние два коммита. Также принимает диапазоны:
git revert HEAD~2..HEAD
# Точно так же вы можете отменить ряд коммитов, используя хэши коммитов (не включая первый хеш):
git revert <your_commite_sha>
# Отмена мердж коммита:
git revert -m 1 <merge_commit_sha>
# Чтобы получить только один коммит, вы можете использовать 'rebase -i',
# Или вы можете сделать это вручную (обязательно сделайте это на верхнем уровне вашего репозитория)
# Привести ваш индекс и дерево в нужное состояние, не меняя HEAD:
git checkout <your_target_commit_sha>
# После чего обязательно зафиксируйте коммит. Будьте уверены в том, что вы сделали на 150% и напишите хорошее сообщение с описанием того, что вы только что сделали:
git commit