@TostMaria

Как добавить в HashMap только ключи?

Добрый день!
Вопрос по Java. Есть необходимость прочитать из файла строки вида <число>+<" ">+<остальная часть строки>.
Например: "95 Добрый день!"
В дальнейшем информацию надо преобразовывать - делать определенную выборку из чисел, и по этим числам - получать строку, которая соответствовала числу в исходном файле.
Я правильно понимаю, что для этого подойдет HashMap?
Но у меня возникает вопрос, можно ли поместить в HashMap только ключи? А потом только значения?

Например, для извлечения символов самой строки нужно использовать такой код (гугл помог):
int start = 10;

int end = 14;

char buf[] = new char[end - start];

s.getChars(start, end, buf, 0);

А что из HashMap написать вместо buf?
  • Вопрос задан
  • 2634 просмотра
Решения вопроса 2
@gurinderu
java developer
String a="41 text";
Map<Integer,String> map = new HashMap<>();
String[] temp = a.split(" ",2);
if(temp.length==2){
    map.put(Integer.valueOf(temp[0]),temp[1])
}
Ответ написан
@Trox
Вставить только ключи можно, а вот только значения не совсем.
Для решения задачи можно использовать такой код(код выше не совсем подхождит, так как расчитан на то, что будет только один пробел в строке):
import java.util.*;
import java.util.regex.*;
public class Analyzer{
  private final static Pattern LINES_NUM_PATTERN = Pattern.compile("\\d+\\s*");

  public static void main(String[] args) throws InterruptedException, IOException {
        Map<Integer, String> lines = new HashMap<>();
        String line ="43 Hello universe!";
        Matcher matcher = LINES_NUM_PATTERN.matcher(line);
        if (matcher.find() && matcher.start() == 0) {
            String number = matcher.group().trim();
            lines.put(Integer.parseInt(number), line.substring(matcher.end()));
        }
        System.out.println(lines);
 }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект