L
i
nux.org.ua
Головна
Форум
Довідка
Правила
Пошук
Увійти
Реєстрація
Linux.org.ua
»
Технічні питання
»
Розробка
»
Як у джаві зберегти позицію ітератора, щоб пізніше відновити її
« попередня гілка
наступна гілка »
Відповісти
Друк
Сторінки:
1
Автор
Гілка: Як у джаві зберегти позицію ітератора, щоб пізніше відновити її (Прочитано 10302 раз)
lpi3
Новачок
дописів: 30
Карма: +0/-0
Як у джаві зберегти позицію ітератора, щоб пізніше відновити її
«
:
2020-07-01 15:25:16 »
Цитата
Вітаю!
Чи можливо якимось чимось зберегти позицію ітератора для linkedlist, щоб пізніше її відновити?
Я шукав у гуглі, але якось безрезультатно. Може хтось стикався і щось порадить?
Дякую.
Записаний
Миха́йло Даниле́нко
Гість
Re: Як у джаві зберегти позицію ітератора, щоб пізніше відновити її
«
Відповідей #1 :
2020-07-01 19:02:36 »
Цитата
Не java'ist, але можна трохи більше контексту? Ви проходите по списку, і під час проходу вам треба відкотитися назад? Чи ви щось робите, перериваєте цикл, і потім хочете його відновити? Чи це взагалі між різними запусками програми?
Записаний
lpi3
Новачок
дописів: 30
Карма: +0/-0
Re: Як у джаві зберегти позицію ітератора, щоб пізніше відновити її
«
Відповідей #2 :
2020-07-02 10:45:01 »
Цитата
Пишу парсер, і хотілося б що була можливість брати дані з різник колекцій або масивів.Поступово застосовую різні можливі парсери, а також (інколи) їх комбінації.
І в момент, коли один з парсерів не спрацював треба відновлювати стан ітератора і передавати його наступному парсеру.
Ось трохи змінений шматок коду. Index зараз працює тільки з масивами і замість ітератора просто індекс. У попередній версії були ітератори, але їх не можна скопіювати як число і відповідно відновлення стану ітератора не спрацьовувало.
Код: Java
public
static
class
Index
<
T
>
{
public
T
[
]
value
;
public
int
current
;
public
Index
(
T
[
]
t
)
{
value
=
t
;
current
=
0
;
}
}
public
static
<
T,U
>
Instance
<
LinkedList
<
T
>
,U
>
many
(
Instance
<
T,U
>
p
)
{
return
new
Instance
<
LinkedList
<
T
>
,U
>
(
(
Index
<
U
>
u
)
->
{
LinkedList
<
T
>
ret
=
new
LinkedList
<
T
>
(
)
;
while
(
true
)
{
int
current
=
u.
current
;
Maybe
<
T
>
r
=
p.
fn
.
apply
(
u
)
;
if
(
r.
value
!=
null
)
{
ret.
add
(
r.
value
)
;
}
else
{
u.
current
=
current
;
return
new
Maybe
<
LinkedList
<
T
>>
(
ret
)
;
}
}
}
)
;
}
public
static
<
T,U
>
Instance
<
T,U
>
option
(
Instance
<
T,U
>
p1, Instance
<
T,U
>
p2
)
{
return
new
Instance
<
T,U
>
(
(
Index
<
U
>
u
)
->
{
if
(
u.
value
.
length
==
u.
current
)
{
return
new
Maybe
<
T
>
(
)
;
}
else
{
int
current
=
u.
current
;
Maybe
<
T
>
r
=
p1.
fn
.
apply
(
u
)
;
if
(
r.
value
!=
null
)
{
return
r
;
}
else
{
u.
current
=
current
;
return
p2.
fn
.
apply
(
u
)
;
}
}
}
)
;
}
Записаний
Відповісти
Друк
Сторінки:
1
« попередня гілка
наступна гілка »
Linux.org.ua
»
Технічні питання
»
Розробка
»
Як у джаві зберегти позицію ітератора, щоб пізніше відновити її