ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] list 에서 특정 list에 든 데이타들 삭제하기(arrayList, remove)
    WEB/BACK 2021. 11. 29. 22:29
    반응형

    안녕하세요 오늘은 java에서 특정 list에서 원하는 데이터들만 제거하는 방법을 포스팅 하겠습니다.

    우리가 어떤 list 에다가 어떤 list 를 추가할때 add를 이용합니다. 그런데 반대의 경우 삭제를 할때 그대로 for 문을 이용하게되면 순서가 뒤죽박죽 되면서 원하는 결과가 나오지 않을 수 있습니다. 그럴때는 쉽게 생각해서 ++ 가 아니라 -- 를 이용합니다.

     

    예를 들어서 여러가수들의 노래 리스트가 있습니다.

    List<String> song_list = new ArrayList<String>();
    
    song_list.add("나도 여자랍니다");
    song_list.add("문득");
    song_list.add("그게 정말이니");
    song_list.add("bad love");
    song_list.add("sorry");
    
    System.out.println(song_list); // [나도 여자랍니다, 문득, 그게 정말이니, bad love, sorry]

    그리고 클라이언트가 비오 노래 인덱스 목록을 가져와서는 비오노래는 모두 빼달라고 요청합니다.

    비오의 노래 목록 인덱스는 다음과 같습니다.(문득, 배드러브)

    List<Integer> be_o_list = new ArrayList<Integer>();
    be_o_list.add(1);
    be_o_list.add(3);
    
    System.out.println(be_o_list); // [1, 3]

    물론 위에 코드블럭을 아래처럼 짧게 한줄로 표현할 수도 있습니다.

    List<Integer> be_o_list = new ArrayList<Integer>(Arrays.asList(1,3));

     

    전체 노래 목록에서 요즘 핫한 비오의 노래들만 제거 합니다.

    for (int j = be_o_list.size() - 1; j >= 0; j--) {
    		int index = be_o_list.get(j);
    		song_list.remove(index);
    }
    
    System.out.println(song_list); // [나도 여자랍니다, 그게 정말이니, sorry]

    뒤에서부터 제거합니다.

     

    참고로 .remove(index) 입니다. 몇번째 인덱스를 삭제하는겁니다.

     

    감사합니다.

     

    전체 코드

    public static void main(String[] args) {
    
    		List<String> song_list = new ArrayList<String>();
    
    		song_list.add("나도 여자랍니다");
    		song_list.add("문득");
    		song_list.add("그게 정말이니");
    		song_list.add("bad love");
    		song_list.add("sorry");
    
    		System.out.println(song_list); // [나도 여자랍니다, 문득, 그게 정말이니, bad love, sorry]
    
    		List<Integer> be_o_list = new ArrayList<Integer>(Arrays.asList(1,3));
    //		List<Integer> be_o_list = new ArrayList<Integer>();
    //		be_o_list.add(1);
    //		be_o_list.add(3);
    
    		System.out.println(be_o_list); // [1, 3]
    
    		for (int j = be_o_list.size() - 1; j >= 0; j--) {
    			int index = be_o_list.get(j);
    			song_list.remove(index);
    		}
    
    		System.out.println(song_list); // [나도 여자랍니다, 그게 정말이니, sorry]
    	}

     

    반응형

    댓글

Designed by Tistory.