Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove all objects in an arraylist that exist in another arraylist

Tags:

java

arraylist

I'm trying to read in from two files and store them in two separate arraylists. The files consist of words which are either alone on a line or multiple words separated by commas. I read each file with the following code (not complete):

ArrayList<String> temp = new ArrayList<>();  FileInputStream fis; fis = new FileInputStream(fileName);  Scanner scan = new Scanner(fis);  while (scan.hasNextLine()) {     Scanner input = new Scanner(scan.nextLine());     input.useDelimiter(",");     while (scan.hasNext()) {         String md5 = scan.next();         temp.add(md5);     } } scan.close();      return temp; 

I now need to read two files in and remove all words from the first file which also exist in the second file (there are some duplicate words in the files). I have tried with for-loops and other such stuff, but nothing has worked so any help would be greatly appreciated!

Bonus question: I also need to find out how many duplicates there are in the two files - I've done this by adding both arraylists to a HashSet and then subtracting the size of the set from the combined size of the two arraylists - is this a good solution, or could it be done better?

like image 739
GeorgeWChubby Avatar asked Jun 02 '13 23:06

GeorgeWChubby


People also ask

What is the difference between ArrayList Clear () and removeAll () methods?

clear() deletes every element from the collection and removeAll() one only removes the elements matching those from another Collection.


2 Answers

You can use the removeAll method to remove the items of one list from another list.

To obtain the duplicates you can use the retainAll method, though your approach with the set is also good (and probably more efficient)

like image 151
Joni Avatar answered Sep 25 '22 15:09

Joni


The collection facility has a convenient method for this purpose:

list1.removeAll(list2); 
like image 36
Mordechai Avatar answered Sep 23 '22 15:09

Mordechai