Set : 데이터의 중복허용 불가능, 순서를 유지하지 않는 집합
중요**List : 데이터의 중복허용 가능, 순서유지
Array와 List의 차이
인터페이스냐 클래스냐의 차이
Map : Key값을 알면 Value값을 구하기 가능
컬렉션-자료구조(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타입 안에 데이터가 있다");
}
}
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]);
}
}
}
가장 많이 사용하는 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);
}
}
}
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());
}
}
키는 중복을 허용하지 않고, 값은 중복을 허용한다
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));
}
}
}