2016-06-08 3 views
-5

У меня есть два списка массивов. Один список массивов с именем FinalAmount.Как выполнить вычисления в списке массивов?

Который содержит столбцы, как: Имя, AccountNo, AccntType, сумма, FinalDate

Example: Peter,10025,Savings,50000,20150408 

     Stuart,10054,Savings,21000,20150608 

список Второй массив с именем Операции.

Который содержит столбцы, как: Имя, AccntNo, transactedAmount Дата

Example: Peter,10025,5000,20150404 

     Stuart,10054,1000,20150406 

Я хочу, чтобы вычесть transactedAmount (Транзакции список массивов), которые подпадают под Окончательной даты от суммы (список массива FinalAmount). и удалите эту строку после вычитания из списка массивов транзакций.

Так Выход FinalAmount списка массива будет

Sample Output: Peter,10025,Savings,45000,20150408 

       Stuart,10054,Savings,20000,20150608 

и обе строки из Сделок список массив будет удален.

Пожалуйста, поделитесь своими мыслями или кодом, если у вас есть подход.

+0

https://docs.oracle.com/javase/tutorial/collections/interfaces/list.html и http://www.codejava.net/java-core/collections/java-list-collection -tutorial-and-examples проверить оба и сказать, хотите ли вы это сделать ?? – emotionlessbananas

+0

@holidayCoder Спасибо за ссылки и да, я ДЕЙСТВИТЕЛЬНО хочу это сделать. – pamel

+0

, потому что ваш 'list' содержит как« целое число, так и строку », и поэтому он является сложным, но вы можете попробовать вместо него вместо *, если вы хотите, чтобы только эти 3 значения отображали * – emotionlessbananas

ответ

1

Это пример ответа. Когда я проверил ваш вопрос, я увидел, что мне нужно создать класс одного человека с именем, accountNo, количеством, accType, Date.Когда мы проверим два массива List для вычитания, нам нужно найти тот же AccountNo в обоих массивах. Поэтому нам нужно использовать метод contains, и я переопределяю равный и hashCode.My Пример класса Person точно так же: package java7.demo;

import java.util.Date; 

public class Person { 
    private String name; 
    private int accountNo; 
    private String accType; 
    private int amount; 
    private Date date; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public int getAccountNo() { 
     return accountNo; 
    } 
    public void setAccountNo(int accountNo) { 
     this.accountNo = accountNo; 
    } 
    public String getAccType() { 
     return accType; 
    } 
    public void setAccType(String accType) { 
     this.accType = accType; 
    } 
    public int getAmount() { 
     return amount; 
    } 
    public void setAmount(int amount) { 
     this.amount = amount; 
    } 
    public Date getDate() { 
     return date; 
    } 
    public void setDate(Date date) { 
     this.date = date; 
    } 
    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result + accountNo; 
     return result; 
    } 
    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Person other = (Person) obj; 
     if (accountNo != other.accountNo) 
      return false; 
     return true; 
    } 
    @Override 
    public String toString() { 
     return "name=" + name + ", accountNo=" + accountNo 
       + ", accType=" + accType + ", amount=" + amount + ", date=" 
       + date + ""; 
    } 




} 

главный класс просто нравится:

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

public class AccountSubtractionTest { 

    @SuppressWarnings("deprecation") 
    public static void main(String args[]){ 

     List<Person>FinalAmount = new ArrayList<Person>(); 
     List<Person>Transcation = new ArrayList<Person>(); 
     @SuppressWarnings("deprecation") 
     Date d1 = new Date("01/01/2016"); 
     @SuppressWarnings("unused") 
     Date d2 = new Date("04/01/2016"); 
     Person p1 = new Person(); 
     p1.setName("Peter"); 
     p1.setAccountNo(1234); 
     p1.setAccType("Saving"); 
     p1.setAmount(5000); 
     p1.setDate(d1); 


     Person p2 = new Person(); 
     p2.setName("Robin"); 
     p2.setAccountNo(2222); 
     p2.setAccType("Saving"); 
     p2.setAmount(5000); 
     p2.setDate(new Date("02/02/2016")); 

     FinalAmount.add(p1); 
     FinalAmount.add(p2); 

     Person p3 = new Person(); 
     p3.setName("Peter"); 
     p3.setAccountNo(1234); 
     p3.setAccType("Saving"); 
     p3.setAmount(1000); 
     p3.setDate(d2); 

     Person p4 = new Person(); 
     p4.setName("Robin"); 
     p4.setAccountNo(2222); 
     p4.setAccType("Saving"); 
     p4.setAmount(2000); 
     p4.setDate(new Date("04/02/2016")); 

     Transcation.add(p3); 
     Transcation.add(p4); 

     for(Person p:FinalAmount){ 
      if(Transcation.contains(p)){ 
       int index = Transcation.indexOf(p); 
       Person person = Transcation.get(index); 
       int amount = p.getAmount() - person.getAmount(); 
       p.setAmount(amount); 
       Transcation.remove(index); 
      } 
     } 

     for(int i=0; i<FinalAmount.size(); i++){ 
      System.out.println(FinalAmount.get(i)); 
     } 






    } 

} 

в главном классе, я просто использовать Дата d1 = новый Дата («01/01/2016») Так что вам нужно изменить тип даты. формат, который вы хотите use.My даты только для sample.When я бег выходного кода получаю просто нравится:

name=Peter, accountNo=1234, accType=Saving, amount=4000, date=Fri Jan 01 00:00:00 MMT 2016 
name=Robin, accountNo=2222, accType=Saving, amount=3000, date=Tue Feb 02 00:00:00 MMT 2016 

Пожалуйста, запустите два класса, которые я дал в качестве образца и смотрите, какой код нужно изменить.

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