Członek skanera StringTokenizer przeciwko String.Split
Właśnie dowiedziałem się o klasie skanerów Java, A teraz zastanawiam się, jak się porównuje / konkuruje S. StringTokenizer i String.Split. wiem to StringTokenizer i String.Split Pracuj tylko z wierszami, więc dlaczego powinienem użyć skanera dla łańcucha? Skaner jest właśnie zaprojektowany one-stop-shopping Do podziału?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
10 odpowiedzi
Jarosław
Potwierdzenie od:
Zaprojektowany do przypadków, gdy musisz zdemontować ciąg, wyciągając te różne typy. Jest bardzo elastyczny, ale może nie daje ci najprostnych API Dla prostego uzyskiwania gamki wierszy oddzielonych pewnym wyrazem.
i
Daj prostą składnię do wykonywania tego ostatniego, ale to jest w rzeczywistości wszystko, co robią. Jeśli chcesz przeanalizować uzyskane linie lub zmienić separator w połowie drogi, w zależności od konkretnego markera, nie pomogą ci z nim.
jest jeszcze bardziej restrykcyjny , niż
, A także trochę bardziej kremowy w użyciu. Jest to zasadniczo zaprojektowany do ekstrakcji markerów oddzielonych przez stałe podłoża. Z powodu tego ograniczenia jest około dwa razy szybciej niż
. /Widzieć moje
http://www.javamex.com/tutoria ... shtml
./ Przepudza również wyrażenia regularne. API, Część, której jest
.
Zauważysz z moich czasów
Nadal może się stać
Tysiące linii na kilka milisekund
Na zwykłym samochodzie. Ponadto ma przewagę nad
, Co on daje wniosek w formie tablicy sznurkowej, która zwykle jest to, czego chcesz. Za pomocą
, Jak przewidziano
, jest też "syntactically fussy" większość czasu. Z tego punktu widzenia,
- Dzisiaj jest trochę pustych spektrum przestrzeni i możesz użyć
.
Sławomir
Potwierdzenie od:
http://java.sun.com/javase/6/d ... .html
. Zgadza się i nie obsługuje nawet wyrażeń regularnych. Dokumentacja mówi ::
- Jest to przestarzała klasa, która jest przechowywana do rozważań zgodności, chociaż nie jest zalecane jego zastosowanie w nowym kodzie. Zaleca się, aby wszyscy, którzy szukają tej funkcji używanej metody
Z pakietu.
lub
.
Więc rzućmy to teraz. Pozostaje tylko
http://java.sun.com/javase/6/d ... ring/
i
http://java.sun.com/javase/6/d ... .html
. Jaka jest różnica między nimi?
Najpierw,
Po prostu zwraca tablicę, która upraszcza użycie cyklu foreach:
Jest podniesiony jako strumień:
lub
/On jest ładny
http://java.sun.com/javase/6/d ... mmary
, Więc nie myśl, że zawsze jest ograniczone przez takie proste rzeczy./
Ten interfejs strumieniowy może być przydatny do analizy prostych plików tekstowych lub wejścia konsoli, gdy nie masz /Lub nie może się dostać/ Wszystkie dane wejściowe przed analizą.
Osobiście pamiętam tylko raz, kiedy użyłem
W przypadku projektów szkolnych, kiedy musiałem uzyskać niestandardowy wpis z linii poleceń. To sprawia, że taka operacja jest łatwa. Ale jeśli mam
, czego chcę split w górę, to prawie bez problemów
.
Bronisław
Potwierdzenie od:
split pojawił się na świetle JDK 1.4 rok. Wolniej niż tokenizer, ale łatwiej jest używać, jak nazywa się ona z klasy String.
Skaner był włączony JDK 1.5. Jest najbardziej elastyczny i wypełnia długotrwałą przestrzeń Java API Aby wspierać odpowiednik słynnej rodziny funkcji Cs scanf.
Czesław
Potwierdzenie od:
http://java.sun.com/j2se/1.5.0 ... ring/
zamiast StringTokenizer. Jeśli analizujesz dane tekstowe z źródła poza swoim programem, takie jak plik lub od użytkownika, to jest tutaj, że skaner jest przydatny.
Roman
Potwierdzenie od:
https://github.com/hughperkins/jfastparser
Testowanie na sznurku zawierającym milion podwójnych:
Dariusz
Potwierdzenie od:
org.apache.commons.lang.StringUtils ma metodę split, które pracuje znacznie szybciej niż którekolwiek z dwóch nazw. StringTokenizer lub String.split.
Ale użyj CPU Przez wszystkie trzy te same. Dlatego potrzebujemy również mniej intensywnej metody, której nadal nie mogę znaleźć.
Adam
Potwierdzenie od:
http://eblog.chrononsystems.co ... ringr
Dolna linia to String.split// Za każdym razem, gdy kompiluje szablon wyrażenie regularnego, a zatem może spowolnić działanie swojego programu, w porównaniu z faktem, że używasz wstępnie skompilowanego obiektu szablonu i używać go bezpośrednio do pracy ze sznurkiem.
Mieczysław
Potwierdzenie od:
Posługiwać się "abc".toCharArray// Aby uzyskać szereg znaków dla sznurka. Na przykład:
</string></string></string></string>
Zygmunt
Potwierdzenie od:
Na przykład:
Wynik:
To dlatego, że separator String.split// i Scanner.useDelimiter// To nie jest tylko ciąg, ale wyrażenie regularne. Możemy zastąpić separator "" na " + " W powyższym przykładzie, aby się zachowali StringTokenizer.
Edward
Potwierdzenie od:
ABC|IJK