Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242

Математические операции над generic

21.09.2015, 03:03. Показов 3960. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите плз, как правильно реализовать сложение двух коллекций
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
import java.lang.reflect.Array;
 
public class Vector<Type> {
    @SuppressWarnings("unchecked")
    public Vector(Class<Type> T,int Size){
        mas = (Type[])Array.newInstance(T, Size);
    }
    public void Put(Type value, int pos){
        mas[pos] = value;
    }
    public Type Get(int pos){
        return mas[pos];
    }
    public void Set(Type[] mas){
        this.mas = mas;
    }
    public Type[] Addition(Type[] mas){
        for (int i = 0; i < this.mas.length || i < mas.length; i++){
            this.mas[i] += this.mas[i] + mas[i];
        }
        return this.mas;
    }
    private Type[] mas;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.09.2015, 03:03
Ответы с готовыми решениями:

Математические операции
Доброго времени суток. Возникла проблема необходима написать доп приложение которое будет выполнять математические действия на числа любой...

Математические операции. Что неправильно?
Что не так, Eclipse ругается :-| . Math.log(Math.sqrt(Math.abs(xn - a)),3);

Операции над строкой
Есть строка, например: На_дворе_трава,_на_траве_дрова Произвести над строкой следующие операции: 1. поменять местами 2 и 6 слово ...

15
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.09.2015, 10:14
Просто так реализовать не получится. Что вы хотите получить от сложения Object + Object ?
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
21.09.2015, 17:50  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Просто так реализовать не получится. Что вы хотите получить от сложения Object + Object ?
я хочу получить возможность складывать их в зависимости от их типа, например, если приходит int, то просто сложить числа, если приходит string, то совместить строки у каждого элемента, вот и спрашиваю как лучше это реализовать
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.09.2015, 19:41
Fene4ka_, а если приходит объект типа MySuperObject ?
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
21.09.2015, 20:48  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Fene4ka_, а если приходит объект типа MySuperObject ?
тогда можно выдать уведомление о невозможности выполнения вычислений

Добавлено через 4 минуты
а вообще, по идее, сложение выполняется вызовом метода => если нету метода с параметрами MySuperObject, то и выполнить вычисление такое нельзя ...
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.09.2015, 20:59
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
выполняется вызовом метода =>
что это за метод такой?

В джава нет перегрузки операторов
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
21.09.2015, 22:04  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
В джава нет перегрузки операторов
(( а как тогда решать вот такие задачи ?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.09.2015, 22:11
Fene4ka_, можете например передавать в конструктор ссылку на интерфейс с методом add и потом вызывайте этот метод.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
21.09.2015, 22:54  [ТС]
KEKCoGEN, но я же могу унаследовать только 1 интерфейс, и не могу в нем перегрузить метод
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.09.2015, 23:08
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
но я же могу унаследовать только 1 интерфейс
зачем вам наследовать интерфейс? Имплементацию интерфейса делайте снаружи для каждого типа объектов которые храните в вашей коллекции
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
22.09.2015, 03:03  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
зачем вам наследовать интерфейс? Имплементацию интерфейса делайте снаружи для каждого типа объектов которые храните в вашей коллекции
можете показать, как это будет выглядить ?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.09.2015, 09:06
Fene4ka_,

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
public class Vector<T> {
    
    private T[] mas;
    MathOperationPerformer<T> opPerformer;
    
    public Vector(Class<T> clazz, MathOperationPerformer<T> opPerformer ,int size){
        this.opPerformer = opPerformer;
        mas = (T[])Array.newInstance(clazz, size);
    }
    public void put(T value, int pos){
        mas[pos] = value;
    }
    public Tget(int pos){
        return mas[pos];
    }
    public void set(T[] mas){
        this.mas = mas;
    }
    public T[] addition(T[] mas){
        for (int i = 0; i < this.mas.length || i < mas.length; i++){
            this.mas[i] = opPerformer.addition(this.mas[i], mas[i]);
        }
        return this.mas;
    }
}
Java
1
2
3
public interface MathOperationPerformer<T> {
    T addition(T first, T second);
}
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
22.09.2015, 22:17  [ТС]
KEKCoGEN, так для разных типов нужны разные правила сложения, т.е. мне надо будет писать условие на проверку типа ? или как-то можно обойтись ?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
22.09.2015, 22:22
Fene4ka_, для каждого типа вам надо будет определить операцию сложения и реализовать интерфейс. Можете использовать шаблоны проектирования facade и chain of responsibilities чтобы красиво решить завернуть имплементации для ваших типов и облегчить добавление новых.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
23.09.2015, 00:01  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
для каждого типа вам надо будет определить операцию сложения и реализовать интерфейс. Можете использовать шаблоны проектирования facade и chain of responsibilities чтобы красиво решить завернуть имплементации для ваших типов и облегчить добавление новых.
Последний раз редактировалось KEKCoGEN; Сегодня в 22:23.
как все организовать мне понятно, спасибо, а как производить мат.операции над типом T, чтобы компилятор не ругался ?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.09.2015, 02:01
Лучший ответ Сообщение было отмечено Fene4ka_ как решение

Решение

Цитата Сообщение от Fene4ka_ Посмотреть сообщение
мат.операции над типом T, чтобы компилятор не ругался ?
эммм перечитайте ещё раз пост. Никак
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2015, 02:01
Помогаю со студенческими работами здесь

Операции над множествами
Может у кого-нибудь есть программа с операциями над множествами, скиньте, пожалуйста. Можно и 1 любую операцию для примера.

Побитовые операции над числами
Нашел вот задание помогите решить инфы нигде не могу найти по данной теме а=0xEB и b=0xB7 найти чему равно с=a|b а=0xDD и b=0xAA найти...

Логические операции над Integer
Здравствуйте, есть Integer переменная Integer a = 1001; Как проделать над ней логические операции? Инверсия? Логически сложить с...

Операции над массивами и строками
Затраты как функция времени имеют вид: z= 5*x2+3*x+2000. Доходы имеют вид: d= 0.4*x3 – 10*x +100. Найти методом половинного деления...

Математические операции над матрицами
Необходимо выполнить различные математические действия над матрицами А и В (вычитание, умножение на число и возведение в степень). У меня...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru