powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Перемешать <ArrayList> обьектов
8 сообщений из 8, страница 1 из 1
Перемешать <ArrayList> обьектов
    #37956952
whizzzkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется функция Collections.shuffle которая без проблем мешает примитивы в массиве <ArrayList>, но почему нет возможности её использовать чтобы перемешать ссылки на объекты в том же <ArrayList>? как можно выкрутится из такой ситуации?
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37956966
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
whizzzkeyпримитивы в массиве <ArrayList> ArrayList - это не массив. Примитивы в generic'ах недопустимы.
whizzzkeyно почему нет возможности её использовать чтобы перемешать ссылки на объекты в том же <ArrayList>?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// пример
List<Object> list = new ArrayList<Object>(Arrays.<Object>asList(1, 2.0F, 3.0, '4', "5", 6L));
Collections.shuffle(list);
for (Object i: list)
    System.out.print(i + ";");
	
System.out.println();
// Вывод:
// 3.0;1;5;6;2.0;4;
// Все ОК
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37956968
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanПримитивы в generic'ах недопустимы.whizzzkey, http://www.codenet.ru/webmast/java/autoboxing.php
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37957145
whizzzkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, но неужто вы не поняли что я имею ввиду? абстрагируемся от упаковки и точного определения <ArrayList>
так вот имеем - ArrayList <Integer> - collections.shuffle работает
ArrayList <Object> - collections.shuffle НЕ работает
придумал вот такую хрень:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//Гдето наверху обьявлен gameObjects
ArrayList<GameObject> gameObjects = new ArrayList<GameObject>();
//Перемешка
public void shuffle() {
		int n = gameObjects.size();
		int randomPos;
		GameObject temp;
		GameObject randomObj;
		Random r = new Random();
		for (int i = 0; i < n; i++) {
			 randomPos = i + r.nextInt(n - i);
                         temp = gameObjects.get(i);
                         randomObj = gameObjects.get(randomPos);
                         gameObjects.set(i, randomObj);
                         //randomObj впринципе нафиг не нужен, можно брать напрямую 
                         gameObjects.set(randomPos,temp);
		}
	}
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37957176
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно TestCase посмотреть где shuffle не работает?
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37957193
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
whizzzkeyArrayList <Object> - collections.shuffle НЕ работает
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
package ru.sql.java.whizzzkey;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

import static ru.sql.java.whizzzkey.Shuffler.GameObject.c;

public class Shuffler {
    static class GameObject {
        int order;

        @Override
        public String toString() {
            return "GameObject[" + order + "]";
        }

        static GameObject c(int order) {
            GameObject g = new GameObject();
            g.order = order;
            return g;
        }
    }

    public static void main(String[] args) {
        ArrayList<GameObject> gameObjects = new ArrayList<GameObject>();
        gameObjects.addAll(Arrays.asList(c(0), c(1), c(2), c(3), c(4), c(5)));

        for (GameObject g : gameObjects) {
            System.out.print(g + "; ");
        }
        System.out.println();

        Collections.shuffle(gameObjects);

        for (GameObject g : gameObjects) {
            System.out.print(g + "; ");
        }
        System.out.println();
    }
}



чо не так-то?

Код: plaintext
1.
GameObject[0]; GameObject[1]; GameObject[2]; GameObject[3]; GameObject[4]; GameObject[5]; 
GameObject[2]; GameObject[4]; GameObject[3]; GameObject[5]; GameObject[1]; GameObject[0];
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37957578
olexande
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что мешает рандом вызвать и по его значению использовать (по необходимости, может дубли пропускать)?
...
Рейтинг: 0 / 0
Перемешать <ArrayList> обьектов
    #37958694
whizzzkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
package ru.sql.java.whizzzkey;



=))

авторчо не так-то?

Да всё так, я разобрался когда дебажить стал, все нормально шуфлит, у меня картинки на канве не перемешиваются и первое о чем я подумал - чето не то с шуффлом
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Перемешать <ArrayList> обьектов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]