powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Объеденить несколько записец коллекции в одну.
25 сообщений из 45, страница 1 из 2
Объеденить несколько записец коллекции в одну.
    #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
Объеденить несколько записец коллекции в одну.
    #40090399
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ahmaroot,
Код: java
1.
new Car("mazda", SOME_CATEGORY, ANOTHER_CATEGORY, true)


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

Предлагаю откомпилировать "имеется" и "нужно получить".
И в обе коллекции вставить нужные данные руками. Без группировки.
Потом сюда скрин.
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #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
Объеденить несколько записец коллекции в одну.
    #40090518
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну где ясная задача?
- код не компилится
- конечная структура неизвестна
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #40090521
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Если руппировать по второму параметру, то первый не нужен и сбивает с толку.
Если по первому то второй не нужен.
group by 1
или
group by 2
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #40090572
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Если руппировать по второму параметру, то первый не нужен и сбивает с толку.
Если по первому то второй не нужен.
group by 1
или
group by 2

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

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

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

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

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

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

А по поводу педагогики - пусть ТС сам решает как ему удобней учиться.
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #40090617
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
В форум приходят разговаривать. А ты зачем его оскорбил?
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #40090620
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
А по поводу педагогики - пусть ТС сам решает как ему удобней учиться.
золотые слова.
Только зачем выкладывая решение на блюдечке ты
Оскорбил двоих
22359177
А тут всех в топике до кучи.
22359220
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #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
Объеденить несколько записец коллекции в одну.
    #40090627
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
Поэтому совет от старших когда будешь бежать с решением к доске.
"выкладывай молча" как на стековерфлоу.
Удачи!
...
Рейтинг: 0 / 0
Объеденить несколько записец коллекции в одну.
    #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
25 сообщений из 45, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Объеденить несколько записец коллекции в одну.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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