2015-02-12 3 views
0

У меня есть метод, чтобы вычесть два значения из двух разных списка, которые имеют класс type.The кода для вычитанияКак отлито из объекта типа класса двойного типа в Java

public LinkedHashMap<String, List<Double>> diff() 
    { 
     List<Double> z=new ArrayList<Double>(); 
    for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++){ 
     Double x=(double) ref_jsp.get(i); 
     Double y=st_jsp.get(i); 

      if(x>y){ 
       z.add(x-y); 
      } 
      else{ 
      z.add(y-x); 
      } 

      dif.put("", z); 
     } 

    return dif; 

    } 

Здесь st_jsp и ref_jsp является два списка, такие как List<Ref_user_interface> st_jsp=new ArrayList<Ref_user_interface>(); и List<Ref_user_interface> st_jsp=new ArrayList<Ref_user_interface>(); Ref_user_interface - это мое имя класса. Thses два список имеет значение в следующих

ПУТЬ
ref.setSt1_vs1_bag6_rb(rs.getDouble(8)); 
ref.setSt1_vs1_bag7_rb(rs.getDouble(9)); 
ref.setSt1_vs1_bag8_rb(rs.getDouble(10)); 
st_jsp.add(ref); 

где матч Ref_user_interface ref=new Ref_user_interface(); В моем методе вычитать, я получаю ** не могу конвертировать из Ref_user_interface Удвоить ** на линии Double x= ref_jsp.get(i);Double y=st_jsp.get(i);. Есть ли способ, с помощью которого я могу вычесть мои значения из двух списков, в которых хранятся данные типа объекта.?

EDIT-1 У меня есть геттер и сеттер methods.But для каждого значения списка, Должен ли я включать в себя методы геттер ?? Для моего геттер и сеттер метода, пожалуйста, перейдите по ссылке setter method of mine

EDIT -2

Я изменил мой метод вычитания всех ваших ответов как-

public LinkedHashMap<String, List<Double>> diff() 
    { 

    List<Double> z=new ArrayList<Double>(); 

    for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++) 
    { 
      Comaprision refObj = ref_jsp.get(i); 
      Comaprision stObj = st_jsp.get(i); 
      Double x =refObj.getBeam_current(); 
      x+=refObj.getBeam_energy(); 
      x+=refObj.getSt2_vs2_bag1_rb(); 
      x+=refObj.getSt2_vs2_bag2_rb(); 
      x+=refObj.getSt2_vs2_bag3_rb(); 
      x+=refObj.getSt2_vs2_bag4_rb(); 
      x+=refObj.getSt2_vs2_bag5_rb(); 
      x+=refObj.getSt2_vs2_bag6_rb(); 
      x+=refObj.getSt2_vs2_bag7_rb(); 
      x+=refObj.getSt2_vs2_bag8_rb(); 
      x+=refObj.getSt2_vs2_bag9_rb(); 
      Double y = stObj.getBeam_current(); 
      y+=stObj.getBeam_energy(); 
      y+=stObj.getSt2_vs2_bag1_rb(); 
      y+=stObj.getSt2_vs2_bag2_rb(); 
      y+=stObj.getSt2_vs2_bag3_rb(); 
      y+=stObj.getSt2_vs2_bag4_rb(); 
      y+=stObj.getSt2_vs2_bag5_rb(); 
      y+=stObj.getSt2_vs2_bag6_rb(); 
      y+=stObj.getSt2_vs2_bag7_rb(); 
      y+=stObj.getSt2_vs2_bag8_rb(); 



      if((x>y)){ 

       z.add(x-y); 
      } 
      else{ 
      z.add(y-x); 

      dif.put("", z); 

     } 
    return dif; 

    } 

, но я не могу Unders и что все значения в 1 индексе добавляются, а затем объединены с y в индексе 1 и т. д. Более того, этот цикл дает мне 42 значения. Мой ref_jsp имеет 21 строку и st_jsp имеет 78 строк, но значение этих строки повторяются twice.I не может понять это цикл .Please помочь мне explain.I не хочу, чтобы сложить свои значения в индексе,

Моя актуальная проблема заключается в ->Я просто хочу сравнить значение в getter каждого индекса x со значением на getter каждого индекса y и найти разницу.

+0

Как получить все методы getter, чей сеттер находится в списке st_jsp в Double x и получить все методы getter, чей сеттер находится в списке ref_jsp в переменной Double y, а затем выполнить сравнение обоих.? – MES

ответ

3

вещь ваш список возвращает объект Ref_user_interface, так что вы можете получить значение с помощью вызова метода геттера как

ref_jsp.get(i).getSt1_vs1_bag6_rb() 

, и если вы хотите, чтобы все методы газопоглотителя, попробуйте это в цикле

for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++){ 
    Ref_user_interface refObj = ref_jsp.get(i); 
    Ref_user_interface stObj = st_jsp.get(i); 
    Double x = refObj.getSt1_vs1_bag6_rb(); 
    Double y = stObj.getSt1_vs1_bag6_rb(); 
    comparing(x,y); 
    x =refObj.getSt1_vs1_bag7_rb(); 
    y = stObj.getSt1_vs1_bag7_rb(); 
    comparing(x,y) 

    // and so on for all the getters method you have for this obj 

    public void comparing(Double x,Double y){ 
      // write your comparing logic here and add value in map 
      if(x > 0 && y > 0){ 
       if(x>y){ 
       z.add(x-y); 
       }else{ 
       z.add(y-x); 
       } 
      }else if(x>0){ 
      z.add(x); 
      }else{ 
      z.add(y); 
      }  
    } 

и т. Д. Вы получаете все значения, которые хотите, а затем используйте их в соответствии с вашей логикой.

+0

У меня есть методы getter и setter, но у меня есть 10 методов geeter. Так что для каждого get (i) я должен использовать ref_jsp.get (i) .getSt1_vs1_bag6_rb() для 6 значений, ref_jsp.get (i) .getSt1_vs1_bag7_rb () для значения 7 и так далее? – MES

+0

, который зависит от вас и вашей логики, которую вы хотите, если хотите значение 'st1_vs1_bag6_rb', тогда вам нужно вызвать' getSt1_vs1_bag6_rb() ', который возвращает значение –

+0

. В моем списке содержатся все значения из методов рецептивных сеттеров и Я хочу сравнить значение по одной основе из обоих списков. Затем, как указать значения для двойной переменной x и y ??? – MES

2

Вам нужен геттер, как этот сеттер ref.setSt1_vs1_bag6_rb(rs.getDouble(8)); . Когда вы вызываете ref_jsp.get(i), он возвращает Ref_user_interface, тогда вам нужно вызвать новый метод получения, чтобы получить то, что вы хотите.

Update:

Double[] dbl_x = new Double[ref_jsp.size()]; 
Double[] dbl_y = new Double[ref_jsp.size()]; 
for(int i=0; i<ref_jsp.size(); i++){ 
    dbl_x[i] = ref_jsp.get(i).getSt1_vs1_bag6_rb(); 
} 

for(int i=0; i<ref_jsp.size(); i++){ 
    dbl_y[i] = st_jsp.get(i).getSt1_vs1_bag6_rb(); 
} 

В конце этого у вас есть два массивов dbl_x и dbl_y и эти массивы содержат х и у значения (которые вы, упомянутые ранее)

Тогда все, что вам нужно сделать, это сравните это два массива и принимайте решения.

for(){ 
    if(dbl_x[i] > dbl_y[i]){ 
    // do this. 
    }else{ 
    // do that. 
    } 
} 

Выше фрагмента кода предоставит вам двойной массив со значениями, которые вам необходимы. Сделайте это для другого набора значений и сравните два массива.

Примечание: getSt1_vs1_bag6_rb() - метод получения, который возвращает требуемые значения. Прочитайте about getters here

+0

могу ли я сделать переменную x как список и поместить все значения из списка ref_jsp? – MES

+0

Нет, он хранит только i-й элемент например: 'Ref_user_interface x = ref_jsp.get (i);' здесь x имеет только один элемент, который находится в i-й позиции –

+0

Итак, как я могу поместить все значения списка ref_st в x varaible и comapre с соответствующими y varibales ?? – MES

Смежные вопросы