List, Set, Map 종류 

List 인터페이스

- Vector 클래스

package j210121;
import java.util.*;
public class VectorTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//동적배열
		Vector v = new Vector();
		v.add("테스트");//새로운 버전에서 사용
		v.addElement("테스트2");
		System.out.println("v의 크기는?:"+v.size());
		
		for(int i=0;i<v.size();i++) {
			String temp = (String)v.elementAt(i);//(String)Object
			System.out.println("temp["+i+"]=>"+temp);
		}
		
		//다양한 값 저장
		Vector v2 = new Vector();
		/*
		Character c = new Character('a');
		v2.add(c);*/
		v2.add('a'); 
        //char형으로 넣어도 자동으로 new Character('a')로 변환되어 들어감(boxing)
		v2.add(10);//v2.add(new Integer(10)); 와 같음
		//중간에 값 추가) insertElementAt(저장할 객체명,삽입할 인덱스번호)
		v2.insertElementAt(3.1415, 1);
		//값 수정) setElementAt(수정할 객체명,수정할 인덱스번호)
		v2.setElementAt("Set", 2); //인덱스2에 위치한 10이 "Set"으로 수정됨
		
		//자료형이 다를때 출력(꺼낼때 자동형변환이 일어나면서 출력됨)
		for(int i=0;i<v2.size();i++) {
			System.out.println("v2["+i+"]의 값:"+v2.elementAt(i));
		}
	}
}
/*
v의 크기는?:2
temp[0]=>테스트
temp[1]=>테스트2
v2[0]의 값:a
v2[1]의 값:3.1415
v2[2]의 값:Set
*/

 

 

- ArrayList 클래스 

리스트 내부에 배열이 들어가 있는 구조

배열을 기반으로 하여 중간 데이터가 삭제되면 그 뒤의 데이터들은 앞으로 한 자리씩 이동한다

package j210121;
import java.util.*;

public class ArrayListTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<String> list = new ArrayList<String>();
        //동적배열
		list.add("포도");
		list.add("딸기");
		list.add("복숭아");
		//추가) add(삽입할 위치, 저장할값)
		list.add(2, "키위");
		//수정) set(수정할 위치,수정할값)
		list.set(0, "오렌지");
		//삭제) remove(삭제할데이터명)
		//      remove(인덱스번호)
		list.remove("키위");//
		System.out.println("list의 크기=>"+list.size());
        
		//검색) 
		for(int i=0;i<list.size();i++) {
			System.out.println(list.get(i));
		}
        
		System.out.println("========확장for문========");
		//for(자료형 출력변수명:배열 또는 컬렉션객체명)
		for(String s:list)
			System.out.println(s);
	}
}
/*
list의 크기=>3
오렌지
딸기
복숭아
========확장for문========
오렌지
딸기
복숭아
*/

 

** LinkedList 클래스

전체적인 요소가 움직여야 되는 ArrayList와 달리 LinkedList는 각 요소를 노드로 정의하며 

노드는 다음 요소의 참조값과 데이터로 구성된다. 따라서 데이터를 연속적으로 구성할 필요없이 

데이터의 수정과 삭제가 일어났을때 노드의 참조값을 수정해주기만 하면 된다.

 

=> 단순 조회용인 경우는 ArrayList가, 동적인 추가 및 삭제가 많은 경우는 LinkedList를 쓰는 것이 좋다

 


- ArrayList 활용

package j210121.sub;
//회원의 정보를 담아서 출력
import java.util.*;

class Person {
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
public class ArrayListTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("회원명?");
		String name = sc.next();
		System.out.println("나이는?");
		int age = sc.nextInt();
		
		Person p = new Person();
		p.setName(name);
		p.setAge(age);
		
		Person p2 =new Person();
		p2.setName("임시");
		p2.setAge(30);
		
		//ArrayList또는 Vector에 담아서 출력---------------------------
		
		ArrayList<Person> list = new ArrayList<Person>();
		list.add(p); list.add(p2); 
		
		ArrayListTest2 alt = new ArrayListTest2();
		alt.getPersonList(list);
	}
	
	public void getPersonList(ArrayList<Person> list) {
		for(Person st:list) {
			System.out.println("이름:"+st.getName());
			System.out.println("나이:"+st.getAge());
			System.out.println("----------");
		}
	}
}
/*
회원명?
임시2
나이는?
20
이름:임시2
나이:20
----------
이름:임시
나이:30
----------
*/

Set 인터페이스

 

- HashSet 클래스

package j210121;
import java.util.*;
public class EnumTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashSet hs = new HashSet();
		hs.add("abc");
		hs.add("abc");
		System.out.println("hs의 갯수:"+hs.size());//1(중복허용하지 않음)
		
		hs.add("abc2");
		hs.remove("abc");
		System.out.println("hs의 갯수:"+hs.size());//1
		
		hs.clear();//전부 삭제
		System.out.println("비어있나?:"+hs.isEmpty());//true
	}
}
/*
hs의 갯수:1
hs의 갯수:1
비어있나?:true
*/

 


Map 인터페이스

- HashTable 클래스

package j210121;
import java.util.*;
public class EnumTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Hashtable<Integer,String> h = new Hashtable<Integer,String>();
		h.put(1,"임시");
		h.put(2,"테스트");
		h.put(3,"010-1234");
		h.put(4,"5678");
		String tel = h.get(3);//get(key값)
		System.out.println("tel=>"+tel);
		}
	}
}
/*
tel=>010-1234
*/

 

+ Recent posts