powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / поделить Set на равные доли
13 сообщений из 13, страница 1 из 1
поделить Set на равные доли
    #40096795
Samantata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дано
Set<String> str =HashSet(); размер любой
int N; может быть нечетное

надо str красиво порезать на N равных сетов, называя их как-нибудь str1. str2. str3
в последнем может быть на 1 стринг больше или меньше.

Как это красиво умные люди делают?
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096798
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слово "массив" слышали?
Что это за странное сочитание слов "называя их как-нибудь str1. str2. str3" ?
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096806
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по старинке, for'ами, то я бы как-то так бы сделал.


Код: 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.
42.
43.
44.
45.
46.
47.
import java.util.ArrayList;
import java.util.HashSet;

public class Test11 {

    public static void divideSet( HashSet source, ArrayList<HashSet> destArr ) {
        // Кол-во на которое нужно поделить
        int len = destArr.size();
        int i = 0;
        for ( Object o : source ) {
            HashSet dest = destArr.get( i );
            dest.add( o );
            // Переходим на следующий, если закончилось, то начинаем с начала
            i ++;
            if ( i>=len ) {
                i = 0;
            }
        }
    }

    public static void  main( String argv[] ) {
        HashSet<String> ss = new HashSet();
        ArrayList<HashSet> arr= new ArrayList<>();
        int i;
        // Исходные данные
        for ( i = 0; i<98; i++ ) {
            ss.add( Integer.toString(i) );
        }
        // Сеты куда будем делить
        for ( i=0; i<10; i++ ) {
            HashSet<String> tmp = new HashSet();
            arr.add( tmp );
        }
        // Делим
        divideSet( ss, arr );
        // Выводим, что получилось
        for ( HashSet tmp : arr ) {
            System.out.println( "-------" );
            for ( String s : (HashSet<String>)tmp ) {
                System.out.println( s );
            }
        }
        System.out.println( "--- the end ---" );

        return;
    }
}

...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096809
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Слово "массив" слышали?
Что это за странное сочитание слов "называя их как-нибудь str1. str2. str3" ?
женская логика ТС же))
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096813
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм....

Код: java
1.
2.
3.
default Spliterator<E> spliterator()

Creates a Spliterator over the elements in this set. 
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096814
Samantata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
List<String> arrayList = new ArrayList(mySet);

	         	int countINSet=5;   //размер одного куска сета
			    for (int start = 0; start < arrayList.size(); start += countINSet) {
			        int end = Math.min(start + countINSet , arrayList.size());
			        List<String> sublist = arrayList.subList(start, end);
			        System.out.println(sublist);
			    }


Спасибо всем но я нашла вот такое и себе приспособила. оно работает и очень красивое)))
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096816
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение не очень красивое. Оно - создает копию по количеству объектов.
Более красивое IMHO - это вернуть 2 Iterator или Iterable.
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096823
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Спасибо.

Spliterator<E> - я о таком даже и не знал ))) буду знать
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096830
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Решение не очень красивое. Оно - создает копию по количеству объектов.
Более красивое IMHO - это вернуть 2 Iterator или Iterable.
зато копия переданная в поток не изменяется).
Тут надо смотреть что лучше)
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096849
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Решение не очень красивое. Оно - создает копию по количеству объектов.
Более красивое IMHO - это вернуть 2 Iterator или Iterable.
зато копия переданная в поток не изменяется).
Тут надо смотреть что лучше)

Ещё как изменяется. Конструктор массива не делает deep-copy.
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096853
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Если изменяется, то это не deep а shallow
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096855
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
У меня слово копия это не новая ссылка. Это клон.
...
Рейтинг: 0 / 0
поделить Set на равные доли
    #40096865
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интерфейс Splitterator насколько я поднимаю ввели в восьмерке для поддержки параллельной обработки
стримов. По данной задаче - он наверне не подходит. Размер партишенов на которые он делит будет
наверное сильно отличаться от реализации коллекции.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / поделить Set на равные доли
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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