1
\$\begingroup\$

I have, in Java, an arraylist with these values (many lines, this is just an extract):

20/03/2013 23:31:46 6870 6810 6800 6720 6860 6670 6700 6650 6750 6830 34864 34272 20/03/2013 23:31:46 6910 6780 6800 6720 6860 6680 6620 6690 6760 6790 35072 34496

where the first two values are strings that contain data and are stored in a single element.

What I want to do is to compare the string data elements and delete, for example, the second one and all the elements referred to that line.

For now, I've used a for cycle that every 13 elements compares the string (in order to compare only data strings).

Can I implement this with other better solutions?

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Downsampler {
 public static void main(String[] args) throws Exception{
 //The input file
 Scanner s = new Scanner(new File("prova.txt"));
 //Saving each element of the input file in an arraylist 
 ArrayList<String> list = new ArrayList<String>();
 while (s.hasNext()){
 list.add(s.next());
 }
 s.close();
 //Arraylist to save modified values
 ArrayList<String> ds = new ArrayList<String>();
 int i;
 for(i=0; i<=list.size()-13; i=i+14){
 //combining the first to values to obtain data 
 String str = list.get(i)+" "+list.get(i+1);
 ds.add(str);
 //add all the other values to arraylist ds
 int j;
 for(j=2; j<14; j++){
 ds.add(list.get(i+j));
 }
 //comparing data values
 int k; 
 for(k=0; k<=ds.size()-12; k=k+13){
 ds.get(k); //first data string element 
 //Comparing with other strings and delete
 //TODO 
 }
 }
 }
}
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked Jul 9, 2013 at 11:45
\$\endgroup\$
1
  • \$\begingroup\$ Please, for future maintainer/international safety, use an ISO-formatted locale-independent 'local'-timezone-ignorant timestamp. In the US, there's about something like 7 or 8 different times that those stamps could be, given timezones. If the day-of-month wasn't greater than 12, you have the potential to switch month/day-of-month, depending on reader. \$\endgroup\$ Commented Jul 9, 2013 at 18:48

1 Answer 1

2
\$\begingroup\$

To answer your question.. it depends on how you want to handle the data. Take a step back and put your self in the users shoes. Lets say the user has those numbers saved as bank account transactions.. He would want those numbers saved somewhere, but not necessarily visible. If that was the case you wouldn't want "delete" that data. You could, however, parse the data into say a table. You could give each cell in that table a class that has a boolean value called visible, and a int value. Then you could set a row or column to not visible as you wish. That would give you the ability to then just loop through the rows and columns and output the data as needed.

answered Jul 9, 2013 at 13:18
\$\endgroup\$
3
  • \$\begingroup\$ In my case it's important that in case of duplicates, i keep only one value because i have duplicates every seconds and one line of values it's enough. But still i try to find a good solution \$\endgroup\$ Commented Jul 9, 2013 at 13:24
  • \$\begingroup\$ @Markviduka if it is in a table you can filter it as needed. There is probably a way to do this easily, I just don't know how to do it in java. \$\endgroup\$ Commented Jul 9, 2013 at 14:57
  • \$\begingroup\$ I solved, i used a simple if statement and equals to strings. Thanks a lot \$\endgroup\$ Commented Jul 9, 2013 at 15:24

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.