언어2007. 5. 29. 09:51
일단 내가 원하는것은 1,2,3,4,5가 배열에 들어갔을때

만약 3을 제거 했을시 다음에 6이 왔을시 3자리에 6이 들어가게 하는거였다... 정확히 말하면 들어올 6도 3으로 변환되어야 한다.

이것을 해결하기 위해서 hash,vector 이런것으로 구현해 볼려고 했지만 역시 ArrayList 기능은 막강했다.

import java.util.ArrayList;

public class Main{
       public static void main(String[] args) {
            
              ArrayList a = new ArrayList(); //혼합형 데이터 저장
             
              //ArrayList b = new ArrayList();//JDK 1.4버전 이전           
            
            
              a.add(new Integer(0));   //정수 입력
              a.add(new Integer(1));   //정수 입력
              a.add(new Integer(2));   //정수 입력
              a.add(new Integer(3));   //정수 입력
              a.add(new Integer(4));   //정수 입력
              a.add(new Integer(5));   //정수 입력
             
              String result = "";
              for(int i = a.size()-1; i >= 0 ; i--){
                        result += a.get(i) + ", ";
              }
             
              System.out.println(result);
            
              Integer bfind=new Integer(2);
             
              if(a.contains(bfind)){
                  int pos = a.indexOf(bfind);
                  a.set(pos, "null");
                  System.out.println(a.get(pos));
                  System.out.println("데이터 수정완료~~~");
                  System.out.println((pos+1) + " 의 데이터: " + a.get(pos));
           }
           else{
                  System.out.println("수정할 데이터 없음");
           }
              bfind=new Integer(3);
              if(a.contains(bfind)){
                  int pos = a.indexOf(bfind);
                  a.set(pos, "null");
                  System.out.println(a.get(pos));
                  System.out.println("데이터 수정완료~~~");
                  System.out.println((pos+1) + " 의 데이터: " + a.get(pos));
           }
           else{
                  System.out.println("수정할 데이터 없음");
           }
           
            
//            arraylist의 삭제기능
              Integer afind=new Integer(2);
              if(a.contains(afind)){ //arraylist a에서 100.0을 찾으면
                     System.out.println(" 삭제할 데이터를 찾았어요.!!!");
                     a.remove(a.indexOf(afind)); //찾은 데이터 삭제
                     System.out.println(" 삭제 완료~!!");
                     //System.out.println(a.get(a.indexOf(afind)));
              }else{
                     System.out.println("삭제할 데이터 " + afind + "가 없어요.!!!!");
              }
            
              //arraylist의 검색기능
              //Integer find=new Integer(2);
              String find="null";
              if(a.contains(find)){
                     System.out.println(" 검색 위치 : " + a.indexOf(find));
                     System.out.println(" 검색 내용 : " + a.get(a.indexOf(find)));                    
                     a.set(a.indexOf(find),new Integer(a.indexOf(find)));
                    
              }else{
                     System.out.println(find + " 데이터가 없어요.");
              }
             
              System.out.println(a.toString());
             
       }
}

내가 원하는기능을 구현하기 위해 만든 샘플 파일이다.

일단 3값을 제거 하지는 않고 3을 수정하여서 null로 만든다...

새로운 값이 들어올경우  null 값의 index값을 찾아서 원하는값으로 넣어준다(수정으로)

일단 해야할일은 처음에 모든 데이터를 null로 넣어야 겠다.

참고 사이트
http://blog.naver.com/ssorvase?Redirect=Log&logNo=140036418525

http://kin.naver.com/db/detail.php?d1id=1&dir_id=10106&eid=+sO2r52I87z5z7gHj1mQVWIrgq4m2Waq&qb=QXJyYXlMaXN0


내가 이걸 한 이유는 메신저에 채팅폼을  띄울때 10개를 제한으로 띄우는데

채팅폼은 배열로 만들어야 하기떄문에 채팅폼의 번호를 정해주는것을 만들고 있다.

서버에서 1,2,3을 보내주면 클라이언트는 ChatForm[] chat = new ChatForm[1]........  (2)..(3).. 이런식으로

받아서 채팅폼을 만든다. 채팅폼이 사라질경우 만약 1이면 1값을 서버에 반환하고

서버는 그 값을 나중에 재사용해야 하기때문에 null로 변환하고 나중에 새로운창을 뜨면 2값이 아닌 1값을 띄우는거다.

만약 이걸하지 않으면 계속 1씩 증가하기때문에 계속 폼을 띄우고 닫고 이렇게 10번하면 10개의 제한을 벗어나 10개이상

이 되므로 안된다.
Posted by 동동(이재동)