• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konwersja z String do List<int[][]>

Object Storage Arubacloud
0 głosów
903 wizyt
pytanie zadane 12 listopada 2017 w Java przez niezalogowany
Witam, jak najprościej przekonwertować takiego stringa:

[[[0, 0], [1, 0], [2, 0], [3, 0]], [[5, 5], [6, 5], [7, 5]], [[6, 1], [7, 1], [8, 1]], [[4, 7], [4, 8]], [[1, 4], [2, 4]], [[8, 7], [9, 7]], [[4, 2]], [[2, 7]], [[6, 9]], [[0, 8]]]

do listy List<int[][]> ?

 

Pozdrawiam :)

2 odpowiedzi

0 głosów
odpowiedź 12 listopada 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Wygląda mi to jak jakiś json. Może warto poszukać biblioteki parsującej jsona do tego zadania. Np Gson.

Inaczej to najłatwiej było by to zrobić jakimś regexem
0 głosów
odpowiedź 12 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
przywrócone 12 listopada 2017 przez Aisekai
Jakbym miał napisać funkcję do  konwertowania takiego stringa to bym:

-Zesplitował (split) to podając ", [" jako argument. Tutaj miałbyś ile będzie tablic dwuelementowych

- Potem pousuwałbym wszystkie '[' , ',' , ']'. Tak żebyś otrzymał pary "0 0", "1 0" itd.

- I potem każdego tak powstałego stringa splitowałbym po ' '. I sprasowałbym każdego takiego człona do inta. i dodał do tablicy..

Nie uczyłem się jeszcze parsować jsonów, nie znam struktury jsona, więc może rzeczywiście to jakiś json jest i istnieje jakaś metoda do parsowania jsonów.

EDIT: Nie zrobisz czegoś takiego, bo int nie jest obiektem. Mógłbyś zrobić listę Integer[][]
komentarz 12 listopada 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Z tego co mi się wydaje jest możliwosć zrobienia <int[]> ponieważ tablica intów jest typem tablicowym a nie prostym jak int
komentarz 12 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
Ano rzeczywiście, mój błąd :)
komentarz 12 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
    public static List<int[][]> parseStringToMatrix(String str){
        List<int[][]> list = new ArrayList<int[][]>();
        String[] pairs = str.split(", \\[");
        for (int i = 0; i < pairs.length; i++) {
            pairs[i] = pairs[i].replaceAll(",", "");
            pairs[i] = pairs[i].replaceAll("\\[", "");
            pairs[i] = pairs[i].replaceAll("]", "");
        }

        int[][] intNumbers = new int[pairs.length][2];
        for (int i = 0; i < pairs.length; i++) {
            String[] stringNumbers = pairs[i].split(" ");
            intNumbers[i][0] = Integer.parseInt(stringNumbers[0]);
            intNumbers[i][1] = Integer.parseInt(stringNumbers[1]);
        }

        list.add(intNumbers);
        return list;
    }

Coś takiego na szybko. 

Podobne pytania

0 głosów
1 odpowiedź 199 wizyt
0 głosów
1 odpowiedź 701 wizyt
pytanie zadane 1 listopada 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)
0 głosów
2 odpowiedzi 477 wizyt
pytanie zadane 1 listopada 2015 w C i C++ przez niezalogowany

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...