Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Объеденить несколько записец коллекции в одну. / 25 сообщений из 45, страница 1 из 2
12.08.2021, 19:07
    #40090397
ahmaroot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Всем привет.
Можно ли как-то создать коллекцию на основе имеющейся (желательно на основе механизма коллекций - группировка и т.д.) в примере ниже:

Имеется:
Код: java
1.
2.
3.
4.
5.
ArrayList<Car> cars = new ArrayList<Car>();
    cars.add(new Car("mazda", SOME_CATEGORY, true));
    cars.add(new Car("mazda", ANOTHER_CATEGORY, true));
    cars.add(new Car("bmv", SOME_CATEGORY, true));
    cars.add(new Car("gaz", SOME_CATEGORY, true));



Нужно получить:
Код: java
1.
2.
3.
4.
ArrayList<Car> cars = new ArrayList<Car>();
    cars.add(new Car("mazda", SOME_CATEGORY, ANOTHER_CATEGORY, true));
    cars.add(new Car("bmv", SOME_CATEGORY, true));
    cars.add(new Car("gaz", SOME_CATEGORY, true));
...
Рейтинг: 0 / 0
12.08.2021, 19:22
    #40090399
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
ahmaroot,
Код: java
1.
new Car("mazda", SOME_CATEGORY, ANOTHER_CATEGORY, true)


Я не очень понял. Было конструкторе 3 парам а стало 4?
...
Рейтинг: 0 / 0
12.08.2021, 19:35
    #40090404
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
ahmaroot,
Если делать аналог group by sql то в java есть аналог в стимах.
Но как в sql, там не складываются все поля.
Возвращается другая коллекция с группой строк.
Может тебе стримы нужны?
https://metanit.com/java/tutorial/10.7.php
...
Рейтинг: 0 / 0
12.08.2021, 19:42
    #40090406
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
ahmaroot,

Предлагаю откомпилировать "имеется" и "нужно получить".
И в обе коллекции вставить нужные данные руками. Без группировки.
Потом сюда скрин.
...
Рейтинг: 0 / 0
13.08.2021, 11:37
    #40090509
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
ahmaroot

Нужно получить:
Код: java
1.
2.
3.
4.
ArrayList<Car> cars = new ArrayList<Car>();
    cars.add(new Car("mazda", SOME_CATEGORY, ANOTHER_CATEGORY, true));
    cars.add(new Car("bmv", SOME_CATEGORY, true));
    cars.add(new Car("gaz", SOME_CATEGORY, true));


Задача вроде-бы ясная. Но смущает этот конструктор с еще +1 параметром. Это какой-то частный случай.
А если madza будет входить в 15 категорий?
...
Рейтинг: 0 / 0
13.08.2021, 11:53
    #40090518
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
mayton,
Ну где ясная задача?
- код не компилится
- конечная структура неизвестна
...
Рейтинг: 0 / 0
13.08.2021, 11:55
    #40090521
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
mayton,
Если руппировать по второму параметру, то первый не нужен и сбивает с толку.
Если по первому то второй не нужен.
group by 1
или
group by 2
...
Рейтинг: 0 / 0
13.08.2021, 15:00
    #40090572
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
PetroNotC Sharp
mayton,
Если руппировать по второму параметру, то первый не нужен и сбивает с толку.
Если по первому то второй не нужен.
group by 1
или
group by 2

Да все тут понятно, просто чувак забыл указать что category - коллекция. Ему надо сгруппировать по имени тачки все категории. На скале сделал бы через моноиды
...
Рейтинг: 0 / 0
13.08.2021, 15:17
    #40090577
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
забыл ник,
Укажи компилируемый код. Хотя бы постсновку.
Будет ясно про что ты.
Я сомневаюсь)
Выше ссылка, там все примеры ясны и понятны. Тут какое то зазеркалье.
Аффтар тут уже не появится.
...
Рейтинг: 0 / 0
13.08.2021, 15:20
    #40090578
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
забыл ник,

Какой смысл в
Тойота тойотаЖигули жигули жигули жигули жигулиОпель опель
?
...
Рейтинг: 0 / 0
13.08.2021, 15:26
    #40090579
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Группируют так
марка купившиеЖигули иван,петр,машаОпель иван,клава
...
Рейтинг: 0 / 0
13.08.2021, 15:32
    #40090581
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
PetroNotC Sharp
Группируют так

вот ему так и надо, только вместо "купившие иван, петр" - у него "категории : лимузин, купе"
...
Рейтинг: 0 / 0
13.08.2021, 15:41
    #40090585
Объеденить несколько записец коллекции в одну.
10 постов чтоб группой сеньоров решить задачу на 6 строк..
Код: java
1.
2.
3.
4.
5.
6.
        Map<String, Set<Category>> categoriesByCar = new HashMap<>();
        for (Car car : cars)
            categoriesByCar.computeIfAbsent(car.name, c -> new HashSet<>()).addAll(car.categories);
        List<Car> groupedCars = new ArrayList<>(categoriesByCar.size());
        for (Map.Entry<String, Set<Category>> entry : categoriesByCar.entrySet())
            groupedCars.add(new Car(entry.getKey(), entry.getValue()));


Компилируемый код целиком:

Код: 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.
import org.junit.Test;

import java.util.*;

import static io.elsci.peaksel.chromatogram.peak.PeakApplyTest.Category.ANOTHER_CATEGORY;
import static io.elsci.peaksel.chromatogram.peak.PeakApplyTest.Category.SOME_CATEGORY;

public class PeakApplyTest {
    static class Car {
        String name;
        Set<Category> categories = new HashSet<>();

        Car(String name, Category category) {
            this.name = name;
            this.categories.add(category);
        }
        Car(String name, Set<Category> categories) {
            this.name = name;
            this.categories.addAll(categories);
        }
    }
    enum Category{
        SOME_CATEGORY, ANOTHER_CATEGORY
    }
    @Test public void blah() {
        ArrayList<Car> cars = new ArrayList<Car>();
        cars.add(new Car("mazda", SOME_CATEGORY));
        cars.add(new Car("mazda", ANOTHER_CATEGORY));
        cars.add(new Car("bmv", SOME_CATEGORY));
        cars.add(new Car("gaz", SOME_CATEGORY));

        Map<String, Set<Category>> categoriesByCar = new HashMap<>();
        for (Car car : cars)
            categoriesByCar.computeIfAbsent(car.name, c -> new HashSet<>()).addAll(car.categories);
        List<Car> groupedCars = new ArrayList<>(categoriesByCar.size());
        for (Map.Entry<String, Set<Category>> entry : categoriesByCar.entrySet())
            groupedCars.add(new Car(entry.getKey(), entry.getValue()));
    }

}
...
Рейтинг: 0 / 0
13.08.2021, 15:49
    #40090586
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
chpasha,
Да!)
Stanislav Bashkyrtsev,
А кофе можешь принести)))
...
Рейтинг: 0 / 0
13.08.2021, 15:50
    #40090587
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Stanislav Bashkyrtsev
10 постов чтоб группой сеньоров решить задачу на 6 строк

никто ничего не собирался решать. в чем по-твоему педагогический смысл вываливать готовое решение по первому же свистку, вместо того чтобы заставить человека сначала правильно сформулировать вопрос, а потом подтолкнуть его в нужном направлении?
...
Рейтинг: 0 / 0
13.08.2021, 16:15
    #40090592
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
В ответах вообще мало смысла. Их пишут альтруисты. Но мне кажется что для синьоров хоршей тренировкой
была бы разминка мозга в этой-же задаче в Kotlin/Scala/Closure.

Найдите для себя что-то интересное, раз уж вы тут собрались.
...
Рейтинг: 0 / 0
13.08.2021, 16:29
    #40090596
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
mayton,
В java7 было интересно. А в java8 со стримами стало скучнее
...
Рейтинг: 0 / 0
13.08.2021, 16:32
    #40090598
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
mayton,
Пятница!
Анек в тему
---
Жили-были мыши и все их обижали. Как-то пошли они к мудрому филину
и говорят:
— Мудрый филин, помоги советом. Все нас обижают, коты разные, совы.
Что нам делать?
Филин подумал и говорит:
— А вы станьте ёжиками. У ёжиков иголки, их никто не обижает.
Мыши обрадовались и побежали домой. Но по дороге одна мышка сказала:
— Как же мы станем ёжиками? — и все побежали обратно, чтобы задать
этот вопрос мудрому филину.
Прибежав, они спросили:
— Мудрый филин, а как же мы станем ёжиками?
И ответил филин:
— Ребята, вы меня ерундой не грузите. Я стратегией занимаюсь.
...
Рейтинг: 0 / 0
13.08.2021, 16:44
    #40090601
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Для пятницы надо что-то поинтереснее чем группировка машин.
...
Рейтинг: 0 / 0
13.08.2021, 17:30
    #40090610
Объеденить несколько записец коллекции в одну.
chpasha
Stanislav Bashkyrtsev
10 постов чтоб группой сеньоров решить задачу на 6 строк

никто ничего не собирался решать. в чем по-твоему педагогический смысл вываливать готовое решение по первому же свистку, вместо того чтобы заставить человека сначала правильно сформулировать вопрос, а потом подтолкнуть его в нужном направлении?
А чем ему помогают бесполезные посты в этой теме? Тут не было никаких нужных направлений, просто Петро как обычно ниче не понял и решил всю тему засрать, и остальные присоединились.

А по поводу педагогики - пусть ТС сам решает как ему удобней учиться.
...
Рейтинг: 0 / 0
13.08.2021, 17:40
    #40090617
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Stanislav Bashkyrtsev,
В форум приходят разговаривать. А ты зачем его оскорбил?
...
Рейтинг: 0 / 0
13.08.2021, 17:52
    #40090620
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Stanislav Bashkyrtsev
А по поводу педагогики - пусть ТС сам решает как ему удобней учиться.
золотые слова.
Только зачем выкладывая решение на блюдечке ты
Оскорбил двоих
22359177
А тут всех в топике до кучи.
22359220
...
Рейтинг: 0 / 0
13.08.2021, 17:54
    #40090623
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
case class Car(name:String, cat:String, opt: Boolean)

val cars = List(
 Car("mazda","SOME_CATEGORY",true),
 Car("mazda","ANOTHER_CATEGORY",true),
 Car("bmv","SOME_CATEGORY",true),
 Car("gaz","SOME_CATEGORY",true)
);



Код: python
1.
2.
3.
4.
5.
6.
scala> cars.groupBy(x => x.name)
res4: scala.collection.immutable.Map[String,List[Car]] = Map(
 mazda -> List(Car(mazda,SOME_CATEGORY,true), 
               Car(mazda,ANOTHER_CATEGORY,true)), 
 bmv -> List(Car(bmv,SOME_CATEGORY,true)), 
 gaz -> List(Car(gaz,SOME_CATEGORY,true)))
...
Рейтинг: 0 / 0
13.08.2021, 18:17
    #40090627
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Stanislav Bashkyrtsev,
Поэтому совет от старших когда будешь бежать с решением к доске.
"выкладывай молча" как на стековерфлоу.
Удачи!
...
Рейтинг: 0 / 0
19.08.2021, 18:36
    #40091972
O_79_O
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объеденить несколько записец коллекции в одну.
Stanislav Bashkyrtsev
10 постов чтоб группой сеньоров решить задачу на 6 строк..
Код: java
1.
2.
3.
4.
5.
6.
        Map<String, Set<Category>> categoriesByCar = new HashMap<>();
        for (Car car : cars)
            categoriesByCar.computeIfAbsent(car.name, c -> new HashSet<>()).addAll(car.categories);
        List<Car> groupedCars = new ArrayList<>(categoriesByCar.size());
        for (Map.Entry<String, Set<Category>> entry : categoriesByCar.entrySet())
            groupedCars.add(new Car(entry.getKey(), entry.getValue()));


Компилируемый код целиком:

Код: 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.
import org.junit.Test;

import java.util.*;

import static io.elsci.peaksel.chromatogram.peak.PeakApplyTest.Category.ANOTHER_CATEGORY;
import static io.elsci.peaksel.chromatogram.peak.PeakApplyTest.Category.SOME_CATEGORY;

public class PeakApplyTest {
    static class Car {
        String name;
        Set<Category> categories = new HashSet<>();

        Car(String name, Category category) {
            this.name = name;
            this.categories.add(category);
        }
        Car(String name, Set<Category> categories) {
            this.name = name;
            this.categories.addAll(categories);
        }
    }
    enum Category{
        SOME_CATEGORY, ANOTHER_CATEGORY
    }
    @Test public void blah() {
        ArrayList<Car> cars = new ArrayList<Car>();
        cars.add(new Car("mazda", SOME_CATEGORY));
        cars.add(new Car("mazda", ANOTHER_CATEGORY));
        cars.add(new Car("bmv", SOME_CATEGORY));
        cars.add(new Car("gaz", SOME_CATEGORY));

        Map<String, Set<Category>> categoriesByCar = new HashMap<>();
        for (Car car : cars)
            categoriesByCar.computeIfAbsent(car.name, c -> new HashSet<>()).addAll(car.categories);
        List<Car> groupedCars = new ArrayList<>(categoriesByCar.size());
        for (Map.Entry<String, Set<Category>> entry : categoriesByCar.entrySet())
            groupedCars.add(new Car(entry.getKey(), entry.getValue()));
    }

}



норм,пока петро гадил на форуме - решил задачку - красава.Вот если так делать - форум оживет- но для этого нужно сделать рид онли для петро )))причем по ip
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Объеденить несколько записец коллекции в одну. / 25 сообщений из 45, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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