Форум программистов, компьютерный форум, киберфорум
Языки JVM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 20
1

Groovy Метод remove на списке и на диапазоне

07.07.2019, 14:28. Показов 5547. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, всем доброго времени суток ...
Java
1
2
3
4
5
Q = [6, 5, 4, 3, 2, 1] 
println "Q = $Q"
N = Q.remove(1)
println "N = $N"
println "Q = $Q"
Q = [6, 5, 4, 3, 2, 1]
N = 5
Q = [6, 4, 3, 2, 1]


Здесь всё штатно.
Но дальше начинаются непонятки
В книге написано:
... диапазон может быть объявлен следующим образом:
assert 1..10 == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ...
Т.е. диапазон это список, со всеми из этого вытекающими,
но что мы видим дальше:
Java
1
2
3
4
5
Q = 6..1
println "Q = $Q"
N = Q.remove(1)
println "N = $N"
println "Q = $Q"
Q = [6, 5, 4, 3, 2, 1]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at java_util_List$remove.call(Unknown Source)
................................................................................ ...................

Просьба объяснить что здесь происходит и как исправить ситуацию ...

P.S. Если я смогу применить remove к диапазону, то задачу о построении
списка случайных не повторяющихся чисел можно будет решить следующим
образом:
Java
1
2
3
4
5
def Spisok() {
  N = []; Q = n..1
   for(i in Q) {N += Q.remove((int)Math.random()*i)}
     N
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2019, 14:28
Ответы с готовыми решениями:

ArrayList не работает метод Remove()
public void TehdaArraList() { MyKauppa.Add(new Puhelin("Nokia", "Kiina",...

метод Remove() и Replace() в TextBox
Задаюсь все тем же вопросом, почему при заполнении текстового поля не работают эти методы Remove()...

Метод remove (двоичное дерево поиска)
Не получается реализовать метод remove Интерфейс public interface Map<K extends Comparable<K>, V>...

Groovy Теоретически-практический ? про замыкания (Groovy)
order = V = 0; n = 3 def Vid = {it -> print it; print V if ((V+1)%n ==...

5
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.07.2019, 17:08 2
листы разные бывают, очевидно, некоторые могут быть неизменяемые, например
0
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 20
07.07.2019, 20:23  [ТС] 3
xoraxax, а как Твоё предположение соотносится со следующим кодом:
Java
1
2
3
4
5
6
7
8
package groovy
def Vvod() {print "Vvedite n = "; s = System.in.newReader().readLine(); n = s as Integer}
def Vector() {N = []; Q = n..1; for(i in Q) {T = (int)Math.random()*i; N += Q[T]; Q -= Q[T]}; N}
def Vivod() {println "Spisok = $N"}
while(1) {
  Vvod(); if(n == 0) break
  Vector(); Vivod()
}
Ведь Q в выражении Q -= Q[T] изменяется ...

Добавлено через 33 минуты
Извиняюсь, что вместо Ваше написал Твоё ...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package groovy
def Vvod() {print "Vvedite n = "; s = System.in.newReader().readLine(); n = s as Integer}
def Vector() {
  W = []; for(j in n..1) {W += j}
   N = []; for(i in n..1) {N += W.remove((int)Math.random()*i)}
}
def Razmer() {def D = {W = Math.sqrt(n)}; while(D{}%1 != 0) ++n; W}
def Shag(j) {
  L = ""; for(i in 1..s.size()) L += " "; for(i in 1..(j as String).size()) L -= " "
}
def Vivod() {
  println "Spisok!"; R = 1
   for(j in N) {Shag(j); if(R%W != 0) print "$L $j" else {print "$L $j"; println()}; ++R} 
     println()
}
while(1) {
  Vvod(); if(n == 0) break
  Vector(); Razmer(); Vivod()
}
Работающий код с форматированием, чуть чуть не хватило до идеала
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.07.2019, 20:36 4
ну вот смотри, тебе пишут конкректное исключении, указывают конкретное место, где оно возникло, включи дебаггер и посмотри, что происходит в первом и во втором случае, например
0
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 20
08.07.2019, 23:39  [ТС] 5
xoraxax, объясни мне пожалуйста, каким образом дебаггер
поможет мне понять, почему диапазон в случае с remove() является
неизменяемым списком, а в случае с Q -= Q[T] - изменяемым ...
И вообще, когда это в Groovy появились неизменяемые списки ...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.07.2019, 07:06 6
COSMACH, ну ты вот попробуй и расскажешь, каким образом может помочь. Я тебя уговаривать, наверно не стану.
0
09.07.2019, 07:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2019, 07:06
Помогаю со студенческими работами здесь

Groovy Error: no Groovy library is defined for module
Error:Cannot compile Groovy files: no Groovy library is defined for module 'untitled104' Что это за...

Groovy Присвоение ввода с клавиатуры переменной в Groovy
Map rim_arab = BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) print...

LinkedList: метод remove не удаляет нужное значение
В чем может быть ошибка...но не корректно работает метод .remove он не удаляет нужное значение ...

Метод remove() для класа Queue с итератором
Ребят, возникла проблема. Нужно удалять элемент, если был вызван метод remove() после next(), т.е....

Метод remove() у ArrayList не умеет работать с переменными?
Есть массив EditText-ов. Если указывать индекс его методу remove() напрямую - элемент удаляется; ...

Реализовать аппликативный оператор MY-REMOVE-IF с интерфейсом и семантикой, аналогично стандартному REMOVE-IF
Реализовать аппликативный оператор MY-REMOVE-IF с интерфейсом и семантикой, аналогично стандартному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru