자바-13일차(4) 이클립스

최성현·2023년 7월 3일
0

Java

목록 보기
40/46

컬렉션 자료구조

Set : 데이터의 중복허용 불가능, 순서를 유지하지 않는 집합

중요**List : 데이터의 중복허용 가능, 순서유지
Array와 List의 차이
인터페이스냐 클래스냐의 차이

Map : Key값을 알면 Value값을 구하기 가능

Set - generie

컬렉션-자료구조(set,vector,allaylist) / 가변형으로 담기위해서 복수의 자료형 사용
-> generic
컬렉션이 복수의 자료형 저장_안정성이 떨어질 수 있으므로 나온 것이 generic -> <>
(Interface or Class/부모격)<데이터형> 객체이름=new 클래스명<데이터형>;

주로 Interface 사용
Set에 String데이터를 담겠다-Set은 Interface이므로 객체생성이 안된다

Set<String> 변수=new HashSet<String>();

추가..배열에 비해 가변적
중복된 값은 갯수 포함 안됨
Set변수.add(String값);

컬렉션에서는 length 대신 size 사용
set1.size());

출력#1_for~each

for(String s:Set변수)
	System.out.println(s);

출력#2_Iterator

Iterator<String> iter=set1.iterator();
while(iter.hasNext()) //->iter가 true값이 false값 될 때까지
{
	System.out.println(iter.next());
}

출력#3_for
for문은 Object 배열선언해서 넣어줘야함

Object ob[]=set1.toArray();
for(int i=0;i<ob.length;i++)
{
	System.out.println(ob[i]);
}

모든데이터 삭제
set1.clear();

삭제 확인

if(set1.isEmpty())
	System.out.println("Set타입 안에 데이터가 없다");
else
	System.out.println("Set타입 안에 데이터가 있다");
public class ExHashSet_10 {

	public static void main(String[] args) {
		// 컬렉션-자료구조(set,vector,allaylist) / 가변형으로 담기위해서 복수의 자료형 사용 -> generic
		//컬렉션이 복수의 자료형 저장_안정성이 떨어질 수 있으므로 나온 것이 generic<>
		//(Interface or Class/부모격)<데이터형> 객체이름=new 클래스명<데이터형>;
		
		//주로 Interface 사용
		Set<String> set1=new HashSet<String>();
		//Set에 String데이터를 담겠다-Set은 Interface이므로 객체생성이 안된다
		
		//추가..배열에 비해 가변적
		set1.add("사과");
		set1.add("포도");
		set1.add("사과"); //중복되었으므로 갯수 포함 안됨
		set1.add("키위");
		set1.add("오렌지");
		set1.add("바나나");
		
		System.out.println("데이타 갯수: "+set1.size());//컬렉션에서는 length 대신 size 사용
		
		System.out.println("출력#1_for~each");
		
		for(String s:set1)
			System.out.println(s);
		System.out.println();
		
		System.out.println("출력#2_Iterator");
		
		Iterator<String> iter=set1.iterator();
		while(iter.hasNext()) //->iter가 true값이 false값 될 때까지
		{
			System.out.println(iter.next());
		}
		
		System.out.println("출력#3_for");
		
		Object ob[]=set1.toArray();
		for(int i=0;i<ob.length;i++)
		{
			System.out.println(ob[i]);
		}
		
		//모든데이터 삭제
		set1.clear();
		
		if(set1.isEmpty())
			System.out.println("Set타입 안에 데이터가 없다");
		else
			System.out.println("Set타입 안에 데이터가 있다");

	}

}

SetInt

public class SetInt_11 {

	public static void main(String[] args) {
		
		HashSet<Integer> set1=new HashSet<Integer>();
		
		set1.add(11);
		set1.add(4);
		set1.add(66);
		set1.add(3);
		set1.add(12);
		set1.add(4);
		
		System.out.println("갯수: "+set1.size());
		
		System.out.println("출력#3_for");
		
		Object ob[]=set1.toArray();
		
		for(int i=0;i<set1.size();i++)
		{
			System.out.printf("%5d",ob[i]);
		}

	}

}

List

가장 많이 사용하는 Interface List
List Interface를 구현한 Vector,ArrayList(가장 폭이 넓음,가장 많이 사용)
순차적으로 데이터 들어감, 중복 데이터 허용
처음생성시 일정한 개수로 생성, 그 이상의 데이터를 넣으면 공간이 자동증가

List를 가장 많이 씀/Vector로도 사용가능

Vector<String> list=new Vector<String>();
List<String> list=new Vector<String>();

초기할당크기
list.capacity()

초기데이터크기
list.size()

출력#1 - 가장 많이 사용하는 출력 법
String s=list.get(i); ->리스트에서는 get으로 사용

for(int i=0;i<list.size();i++)
{
	String s=list.get(i);//->리스트에서는 get으로 사용
	System.out.println(s);
}

출력#2

for(String s:list)
	System.out.println(s);

출력#3

Object ob[]=list.toArray();
		
for(int i=0;i<ob.length;i++)
{
	String s=(String)ob[i];
	System.out.println(s);
}
public class List_12 {

	public static void main(String[] args) {
		
		//List를 가장 많이 씀/Vector로도 사용가능
		Vector<String> list=new Vector<String>();
		//List<String> list=new Vector<String>();
		
		System.out.println("초기할당크기: "+list.capacity());
		System.out.println("초기 데이터 크기: "+list.size());
		
		list.add("사과");
		list.add("포도");
		list.add("키위");
		list.add("사과");//중복가능
		list.add("바나나");
		list.add("오렌지");
		
		System.out.println("초기할당크기: "+list.capacity());
		System.out.println("초기 데이터 크기: "+list.size());
		
		System.out.println("출력#1");
		
		//가장 많이 사용하는 출력 법
		for(int i=0;i<list.size();i++)
		{
			String s=list.get(i);//->리스트에서는 get으로 사용
			System.out.println(s);
		}
		
		System.out.println("출력#2");
		
		for(String s:list)
			System.out.println(s);
		
		System.out.println("출력#3");
		
		Object ob[]=list.toArray();
		
		for(int i=0;i<ob.length;i++)
		{
			String s=(String)ob[i];
			System.out.println(s);
		}
	}

}

ArrayList

List 의 메서드 확인,연습
String 변수[]= {"영준","순영","연주","진평"};

배열의 데이터를 list에 넣기

List<String> list=new ArrayList<String>();
for(String d:data)
	list.add(d); //data 배열을 list에 넣음
write("초기에 배열데이터 add 후 출력", list);

1번 index 삭제하기

list.remove(1);
write("1번 삭제 후 결과", list); //-> 순영삭제

현규 추가하기

list.add("현규");
write("현규 추가 후 출력", list);

값변경

list.set(0, "영환");
write("0번 index 변경 후 출력", list);

전체삭제

list.clear();
System.out.println("삭제후 사이즈: "+list.size());

출력문

public class ArrayList_13 {
	
	//반복될 것 같아서 미리 출력문 만들어 놓음
	public static void write(String title,List<String> list)
	{
		System.out.println("***"+title+"***");
		
		//모든 데이터 싹 뽑는 것
		for(int i=0;i<list.size();i++)
			System.out.println(i+":"+list.get(i));
		System.out.println();
	}
	public static void main(String[] args) {
		// List 의 메서드 확인,연습
		
		String data[]= {"영준","순영","연주","진평"};
		
		//배열의 데이터를 list에 넣기
		List<String> list=new ArrayList<String>();
		
		for(String d:data)
			list.add(d); //data 배열을 list에 넣음
		write("초기에 배열데이터 add 후 출력", list);
		
		
		System.out.println("1번 index 삭제하기");
		list.remove(1);
		write("1번 삭제 후 결과", list); //-> 순영삭제
		/////////////////////////////////////////////
		System.out.println("현규 추가하기");
		list.add("현규");
		write("현규 추가 후 출력", list);
		///////////////////////////////////////////////
		System.out.println("값변경");
		list.set(0, "영환");
		write("0번 index 변경 후 출력", list);
		/////////////////////////////////////////////
		System.out.println("전체삭제");
		list.clear();
		System.out.println("삭제후 사이즈: "+list.size());
	}

}

Map

키는 중복을 허용하지 않고, 값은 중복을 허용한다
key 와 value 을 쌍으로 저장

key String,value도 String
명확할땐 String 가끔 Object

Map<String, String> map=new HashMap<String, String>();

map 값 추가

map.put(키값 (String으로 넣어서 String key값, String으로 넣어서 String value값);

//값은 키값으로 넣으면 먼저 테이터는 없어짐
map.put("name", "손석구");
map.put("name", "제니");

size: map.size()

키 값을 정확하게 알면 value값 얻을 수 있다
map.get("name"); //->map.put으로 넣은 값 get으로 얻음
map.get("age")
map.get("addr")

map으로부터 한 번에 key값을 받아오기

Set<String> keySet=map.keySet();

키값을 먼저 한꺼번에 얻은 후 값을 얻는 방법

방법1

Iterator<String> keyIter=keySet.iterator();
while(keyIter.hasNext())
{
	String key=keyIter.next();
	System.out.println(key+"==>"+map.get(key));
}

방법1 출력문

name==>제니
addr==>제주시 애월읍
age==>23

방법2

for(String key:keySet)
{
	System.out.println(key+"==>"+map.get(key));
}

방법2 출력문

name==>제니
addr==>제주시 애월읍
age==>23
public class Map_14 {

	public static void main(String[] args) {
		//키는 중복을 허용하지 않고, 값은 중복을 허용한다
		//key 와 value 을 쌍으로 저장
		Map<String, String> map=new HashMap<String, String>(); //key String,value도 String
															   // 명확할땐 String 가끔 Object
		map.put("name", "손석구");
		map.put("age", "23");
		map.put("addr", "제주시 애월읍");
		
		//값은 키값으로 넣으면 먼저 테이터는 없어짐
		map.put("name", "제니");
		
		System.out.println("size: "+map.size());
		System.out.println("**키 값을 정확하게 알면 value값 얻을 수 있다");
		
		System.out.println("이름: "+map.get("name")); //->map.put으로 넣은 값 그대로
		System.out.println("나이: "+map.get("age"));
		System.out.println("주소: "+map.get("addr"));
		
		System.out.println("**키값을 먼저 한꺼번에 얻은 후 값을 얻는 방법**");
		
		Set<String> keySet=map.keySet(); //->map으로부터 한 번에 key값을 받아옴
		
		System.out.println("**방법1**");
		Iterator<String> keyIter=keySet.iterator();
		while(keyIter.hasNext())
		{
			String key=keyIter.next();
			System.out.println(key+"==>"+map.get(key));
		}
		
		
		System.out.println("**방법2**");
		for(String key:keySet)
		{
			System.out.println(key+"==>"+map.get(key));
		}
		
	}

}
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글