Piszę w swojej aplikacji ranking i jest prawdopodobnie problem z usuwanie elementów. Nie mam pojęcia co jest źle. Po prostu gdy np. chcę, aby program pofiltrował mi film wg, gatunku wybranego przeze mnie to program wyświetla fakieś filmy, ale to nie są wgl. te, które powinny być wyświetlone. Więc coś wyświetla, ale nie to co powinien.

public void sortRanking(int howSort) {
		deserializationMovie();
		listSortMovies = listMovies;
		
		String dataFromListMovies;
		int position;
		
		if(indexSelectedGenre != 0) {
			
			for(int i = 0; i < listMovies.size(); ++i) {
				dataFromListMovies= listMovies.get(i).getGenre();
				position = dataFromListMovies.indexOf(selectedGenre);
				
				if(position == -1) {
					listSortMovies.remove(i);
				}
			}
		}
		if(indexSelectedCountry != 0) {
			
			for(int i = 0; i < listMovies.size(); ++i) {
				dataFromListMovies= listMovies.get(i).getGenre();
				position = dataFromListMovies.indexOf(selectedCountry);
				
				if(position == -1) {
					listSortMovies.remove(i);
				}
			}
		}
		if(indexSelectedYear != 0) {
			
			for(int i = 0; i < listMovies.size(); ++i) {
				dataFromListMovies= listMovies.get(i).getGenre();
				position = dataFromListMovies.indexOf(selectedYear);
				
				if(position == -1) {
					listSortMovies.remove(i);
				}
			}
		}
		
		if(howSort == 1) {
			Movie.indexSort = "rate";
			Collections.sort(listSortMovies);
		} else if(howSort == 2) {
			Movie.indexSort = "budget";
			Collections.sort(listSortMovies);
		}  else if(howSort == 3) {
			Movie.indexSort = "boxOffice";
			Collections.sort(listSortMovies);
		}
		
	}
	
	public void showRanking(JLabel labelScroll, int ind) {
		JLabel labelRank, labelData = null;
		JButton buttonPoster, buttonOriginalTitle;
		
		int index = 0;
		int y = 40, y1 = 0, yPoster = 30, y1Poster = 0;
		ImageIcon img, imageIcon;
		Image img2, img3;
		
		for(int i = 1; i < listMovies.size()+1; ++i) {
			
			for(int i1 = 0; i1 < listMovies.size(); ++i1) {
				if(listMovies.get(i1).getID() == listSortMovies.get(listSortMovies.size()-i).getID()) {
					index = i1;
				}
			}
			
			final int iindex = index;
			
			labelRank = new JLabel(Integer.toString(i), SwingConstants.CENTER);
			labelRank.setFont(new Font("SansSerif", Font.BOLD, 23));
			if(i == 1)
				labelRank.setBounds(50, y, 90, 30);
			else
				labelRank.setBounds(50, y + y1, 90, 30);
			labelScroll.add(labelRank);
			
			buttonPoster = new JButton();
			if(i == 0)
				buttonPoster.setBounds(215, yPoster, 50, 50);
			else
				buttonPoster.setBounds(215, yPoster + y1Poster, 50, 50);
			buttonPoster.setContentAreaFilled(false);
			buttonPoster.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent arg0) {
					//Movies.showMovie(iindex);
					
				}
				
			});
			
			String path = listSortMovies.get(listSortMovies.size()-i).getLinkPoster();
			
			try {
				if(path.length() > 0) {
					if(path.substring(0,4).equals("http") || path.substring(0,4).equals("HTTP")) {
						try {
							URL url = new URL(path);
							
							img = new ImageIcon(url);
							img2 = img.getImage();
							img3 = img2.getScaledInstance(buttonPoster.getWidth(), buttonPoster.getHeight(), Image.SCALE_SMOOTH);
							imageIcon = new ImageIcon(img3);
							
							buttonPoster.setIcon(imageIcon);
							labelScroll.add(buttonPoster);
							
						} catch (MalformedURLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					} else {
						img = new ImageIcon(path);
						img2 = img.getImage();
						img3 = img2.getScaledInstance(buttonPoster.getWidth(), buttonPoster.getHeight(), Image.SCALE_SMOOTH);
						imageIcon = new ImageIcon(img3);
						
						buttonPoster.setIcon(imageIcon);
						labelScroll.add(buttonPoster);
					}
				}
			} catch(NullPointerException e) {}
			
			buttonOriginalTitle = new JButton(listSortMovies.get(listSortMovies.size()-i).getOriginalTitle());
			buttonOriginalTitle.setFont(new Font("SansSerif", Font.BOLD, 23));
			if(i == 0)
				buttonOriginalTitle.setBounds(350, y, 220, 35);
			else
				buttonOriginalTitle.setBounds(350, y + y1, 220, 35);
			buttonOriginalTitle.setContentAreaFilled(false);
			labelScroll.add(buttonOriginalTitle);
			buttonOriginalTitle.addActionListener(new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent arg0) {
					//showMovie(iindex);
					
				}
				
			});
			
			if(ind == 1)
				labelData = new JLabel(Integer.toString(listSortMovies.get(listSortMovies.size()-i).getRate()));
			else if(ind == 2) 
				labelData = new JLabel(Integer.toString(listSortMovies.get(listSortMovies.size()-i).getBudget()) + " $");
			else if(ind == 3) 
				labelData = new JLabel(Integer.toString(listSortMovies.get(listSortMovies.size()-i).getBoxOffice()) + " $");
			
			labelData.setFont(new Font("SansSerif", Font.BOLD, 23));
			if(i == 0)
				labelData.setBounds(680, y, 250, 35);
			else
				labelData.setBounds(680, y + y1, 250, 35);
			labelScroll.add(labelData);
			
			
			y1+=60;
			y1Poster+=60;
		}
		labelScroll.setPreferredSize(new Dimension(850, y1+60));
	}
	
	@SuppressWarnings("unchecked")
	public void deserializationMovie() {
		try {
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream("DATA/" + login + "/movies.txt"));
			listMovies = (List<Movie>)ois.readObject();
			ois.close();
		} catch (IOException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Tak czyszczę JLabel na którym umieszczanie są wszystkie elementy.

sortRanking(howSort);
				labelScroll.removeAll();
				showRanking(labelScroll, ind);
				labelScroll.repaint();