I need to remove a string from an array list if it does not start with 13. I have read in the data file and each line is read into the ArrayList as a string. The whole line needs to be removed if it does not start with 13. Below shows an example of the data file read in:
13 0 150801 00133990 04 04 1 078 2160 999 1 0 1 0 16 04 07 058 0320 061 0127 068 0546 033 0129 048 0586 042 0133 033
13 0 150801 00140480 04 04 1 086 1730 999 1 0 1 0 13 04 06 047 0309 039 0143 032 0772 017 0131 029 0140 037
13 0 150801 00141320 04 04 1 075 1660 999 1 0 1 0 13 03 06 053 0319 036 0132 037 0733 023 0130 026 0134 029
13 0 150801 00144430 01 01 1 071 1570 999 2 0 1 0 04 03 02 040 0567 065
30 0 150801 0015 15 01 0000 0000 0004 0000 0001 0002 0000 0000 0000 0000 0000 0000 0001 0001 0000 0000 0008 0000
30 0 150801 0015 15 02 0000 0000 0005 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
30 0 150801 0015 15 03 0000 0000 0013 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
30 0 150801 0015 15 04 0000 0000 0021 0000 0000 0001 0001 0000 0000 0001 0000 0000 0000 0006 0000 0000 0007 0001
21 0 150801 0015 15 01 0002 0001 0005 0004 0003 0001 0001 0000 0000 0000 000973 002 001 010 0001 0001
21 0 150801 0015 15 02 0000 0000 0000 0001 0001 0002 0000 0001 0000 0000 000000 000 000 000 0001 0001
21 0 150801 0015 15 03 0000 0001 0000 0000 0001 0004 0003 0001 0002 0001 000000 000 000 000 0003 0003
21 0 150801 0015 15 04 0000 0002 0009 0008 0007 0002 0006 0004 0000 0000 001252 000 004 012 0001 0003
70 0 150801 0015 15 01 0004 0000 0012 0001 00001400 00000000 00005956 00000476 000412 000000 000897 000076 000042542 000000000 000068665 000005776
70 0 150801 0015 15 02 0005 0000 0000 0000 00001790 00000000 00000000 00000000 000511 000000 000000 000000 000053047 000000000 000000000 000000000
70 0 150801 0015 15 03 0011 0002 0000 0000 00003648 00000625 00000000 00000000 001240 000231 000000 000000 000144378 000026705 000000000 000000000
70 0 150801 0015 15 04 0021 0001 0015 0001 00007334 00000417 00006991 00000449 002203 000086 001172 000080 000235235 000007396 000092708 000006400
13 0 150801 00151590 04 04 1 078 2240 999 1 0 1 0 16 04 07 064 0318 073 0137 071 0545 083 0137 079 0604 066 0133 067
13 0 150801 00155070 01 01 1 078 1760 999 1 0 1 0 13 04 06 059 0324 054 0135 060 0643 022 0133 028 0127 049
13 0 150801 00160780 01 01 1 080 2230 999 1 0 1 0 16 04 07 057 0374 059 0132 059 0724 064 0138 066 0456 052 0138 063
13 0 150801 00162180 04 04 1 063 1820 999 1 0 1 0 16 04 07 058 0264 082 0113 081 0474 079 0113 080 0501 069 0113 070
This is what I have written but it doesn't seem like any items are deleted:
public class WIMdataReader {
public static void main(String[] args) throws IOException {
//Opens the file
FileInputStream fis = new FileInputStream("DATA1month.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String readLine;
//Creates an ArrayList to store the data line by line
//Using an ArrayList, which handles dynamic sizing, whereas an array will require a defined size up front, which may not be known.
List<String> WIMdataList = new ArrayList<String>();
//Reads file line by line
while ((readLine = br.readLine()) != null) {
WIMdataList.add(readLine);
}
//removes items from the arrayList
for (int i = 0; i < WIMdataList.size(); i++) {
if (WIMdataList.get(i).contains("13")) {
} else {
WIMdataList.remove(i);
}
}
}
}
startsWith()instead ofcontains()?Listis to create a newListand add only valid entries to it.Java 8Streams andFilterwould go nicely here.