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

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

21.09.2015, 03:03. Показов 3923. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru