2014-09-15 4 views
0

개체의 Arraylist로 작업 중입니다. 숫자가있는 동안 Arraylist에서 값을 삭제하는 데 이미 성공했습니다. spesific 행 을 삭제 나던 그것은 내가 문자열을 가진 경우 삭제해야ArrayList Java String 삭제 삭제 삭제

public class ArrayListDemo { 

public static void main(String[] args) { 

    // create an empty array list with an initial capacity 
    ArrayList<Namer> arrlist = new ArrayList<Namer>(); 

    // use add() method to add values in the list 
    arrlist.add(new Namer("1","A","G")); 
    arrlist.add(new Namer("2","E","G")); 
    arrlist.add(new Namer("3","F","G")); 

    System.out.println("Size of list: " + arrlist.size()); 

    // let us print all the values available in list 
    for (Namer value : arrlist) { 
     System.out.println("age = " + value.age); 
    } 

    arrlist.remove("3"); 

    System.out.println("Now, Size of list: " + arrlist.size()); 

    for (Namer value : arrlist) { 
     System.out.println("age = " + value.age); //System.out.println("Value = " + value); 
    } 
    } 
} 

과 증거를 실행의 결과 :

나는 그들이 문자열 여기있는 동안 문제가 ArrayList를에서 삭제가 있어요는 예입니다 '키'로 번호를 사용할 수 없습니다.

Size of list: 3 
age = 1 
age = 2 
age = 3 

Now, Size of list: 3 
age = 1 
age = 2 
age = 3 

삭제하려면 String으로 작업 할 수 있습니까?

즉,이 ArrayList의

public class Namer 
{ 
    // instance variables - replace the example below with your own 
    public String age; 
    public String name; 

    public String L_name; 


    public Namer(String a, String na , String Lname) 
    { 
     // initialise instance variables 
     age =a; 
     name=na; 
     L_name=Lname; 
    } 

} 

답변

2

제거 개체 나 인덱스를 사용해야의 대상이며, 당신이 중 하나를 사용하지 않는 ...이 코드를 시도

도움이 있다면 :

arrlist.remove(2); 

또는

// create an empty array list with an initial capacity 
ArrayList<Namer> arrlist = new ArrayList<Namer>(); 

Namer namer1= new Namer("1","A","G"); 
Namer namer2= new Namer("2","E","G"); 
Namer namer3= new Namer("3","F","G"); 

// use add() method to add values in the list 
arrlist.add(namer1); 
arrlist.add(namer2); 
arrlist.add(namer3); 

arrlist.remove(namer3); 
6

String이 아니라 ArrayListNamer 개의 개체가 있습니다. remove("3")을 호출하면 ArrayList"3"으로 equals이 호출 될 때 true을 반환하는 개체를 찾습니다. 물론 StringequalsNamer을 비교할 수 없습니다.

name 필드와 직접 비교하고 적절한 항목을 제거해야합니다. 이것은 Iterator과 그 remove 방법으로 할 수 있습니다.

+0

제발 말해줘, 내가 equals라는 새로운 방법을 만들 suppsed 무엇입니까? 메신저 등급 Namer? 그리고이 메소드를 어디에서 호출해야합니까? –

+0

아니요,'name' 속성에 'equals'를 호출하면됩니다. – rgettman

+0

죄송 합니다만 좀 더 구체적으로 말씀해 주시겠습니까? –

0

메소드 은 배열에서 제거 할 요소의 (interger) 색인을 매개 변수로 취합니다. ArrayLists의 '핵심'과 같은 것은 없습니다.

아마도 java.util.Map<Integer,Namer>을 사용하고 싶을 것입니다.

+1

OP는 Object 매개 변수를 사용하는 오버로드를 사용하려고합니다. [public boolean remove (Object o)] (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) #remove (java.lang.Object)) – GriffeyDog