11.Java String/StringBuilder/날짜데이터/Wrapper클래스/컬렉션(Collection API)
2022. 7. 18. 17:26ㆍJAVA
2022.07.18.월
1.String
String x3 = "hello";
System.out.println("8.문자열 연결 : " + x3.concat(" world")); //hello world
System.out.println("9.문자열 변경 : " + x3.replace('h', 'H')); //Hello
System.out.println("9.문자열 변경 : " + x3.replace("he", "HE")); //HEllo
System.out.println("10.부분열 : " + x3.substring(1)); //ello
System.out.println("10.부분열 : " + x3.substring(1, 4)); //ell, endIndex 포함 안됨
//특정문자를 구분자로 해서 문자열 분리하기
String xx = "홍길동/이순신/유관순";
String[] names = xx.split("/");
System.out.println("특정 문자 구분해서 문자열 구분하기 : " + Arrays.toString(names)); //[홍길동, 이순신, 유관순]
//문자열 ==> 문자의 배열
String xx2 = "hello";
char[] chrs = xx2.toCharArray();
System.out.println(Arrays.toString(chrs)); //[h, e, l, l, o]
//문자열이 아닌값을 문자열로 변경 => static method 제공
String k = String.valueOf(10); //10
System.out.println(k);
String k2 = String.valueOf(new char[] {'h', 'e', 'l', 'l', 'o'}); //hello
System.out.println(k2);
2.StringBuilder
package com.stringbuilder;
public class TestMain
{
public static void main(String[] args)
{
//StringBuffer / StringBuilder
//StringBuffer : 여러 쓰레드가 사용시 하나의 쓰레드만 사용 가능(직렬)
// 즉 순서대로 접근해서 사용, 성능 떨어짐, 데이터 무결성보장O
//StringBuilder : 동시에 여러 쓰레드가 사용 가능, 성능 좋음, 데이터 무결성보장X
//생성은 new 이용
StringBuffer buffer = new StringBuffer("hello");
StringBuilder builder = new StringBuilder("hello");
System.out.println(buffer);
System.out.println(builder);
System.out.println(buffer instanceof StringBuffer);
// System.out.println(buffer instanceof String); buffer String type 아님
}
}
package com.stringbuilder;
public class TestMain2
{
public static void main(String[] args)
{
//StringBuilder 클래스 method
StringBuilder builder = new StringBuilder();
System.out.println("1.값 추가 : " + builder.append("Hello")); //Hello
System.out.println("1.값 추가 : " + builder.append(true)); //Hellotrue
System.out.println("1.값 추가 : " + builder.append(100)); //Hellotrue100
System.out.println("1.값 추가 : " + builder.append(new char[] {'h', 'e', 'l', 'l', 'o'})); //Hellotrue100hello
System.out.println("2.중간 삽입 : " + builder.insert(0, "홍길동")); //홍길동Hellotrue100hello
System.out.println("3.삭제 : " + builder.delete(1, 5)); //홍llotrue100hello
System.out.println("4.특정문자얻기 : " + builder.charAt(0)); //홍
System.out.println("5.특정문자 위치값 얻기 : " + builder.indexOf("홍")); //0
System.out.println("6.부분열 : " + builder.substring(1)); //llotrue100hello
System.out.println("6.부분열 : " + builder.substring(1, 4)); //llo
System.out.println("7.거꾸로 : " + builder.reverse()); //olleh001eurtoll홍
//String 타입에 저장
String xxx = builder.toString();
System.out.println("8.String 타입으로 변경 : " + xxx + " " + (xxx instanceof String)); //olleh001eurtoll홍 true
//원본출력 : StringBuilder 원본 영향 받음
System.out.println("원본 : " + builder);
}
}
3.날짜데이터
-Date
package com.date;
import java.util.Date;
public class TestMain
{
public static void main(String[] args)
{
/*
날짜 데이터
1.java.util.Date
2.java.util.Calendar(주로 사용)
*/
//1.java.util.Date 사용
Date d = new Date();
System.out.println(d); //Mon Jul 18 10:36:21 KST 2022
System.out.println(d.getYear()); //deprecated 된 경우
}
}
-Calendar
package com.date;
import java.util.Calendar;
import java.util.Date;
public class TestMain2
{
public static void main(String[] args)
{
/*
날짜 데이터
1.java.util.Date
2.java.util.Calendar(주로 사용)
=> new 이용(x)
=> Calendar.getInstance() 이용
=> 직접 new하지 않고 static 메서드인 getInstance() 에서
객체 생성해서 반환해주는 방식으로 사용됨
=> 이유 : new를 여러번 하지 못하게 막기 위함(싱글턴 패턴)
*/
//1.java.util.Calender 사용
Calendar cal = Calendar.getInstance();
System.out.println("1.날짜 출력 : " + cal);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1; //월 : 0 ~ 11로 관리 -> +1 해줘야함
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int seconds = cal.get(Calendar.SECOND);
System.out.println("년도 : " + year);
System.out.println("월 : " + month);
System.out.println("일 : " + day);
System.out.println("시 : " + hour);
System.out.println("분 : " + minute);
System.out.println("초 : " + seconds);
//특정날짜 설정
Calendar cal2 = Calendar.getInstance();
cal2.set(2021, 11, 25);
//Calendar에서 Date 설정
//cal2.setTime(new Date());
int year2 = cal2.get(Calendar.YEAR);
int month2 = cal2.get(Calendar.MONTH) + 1; //월 : 0 ~ 11로 관리 -> +1 해줘야함
int day2 = cal2.get(Calendar.DAY_OF_MONTH);
System.out.println("작년 년도 : " + year2);
System.out.println("작년 월 : " + month2);
System.out.println("작년 일 : " + day2);
}
}
4.Wrapper클래스
package com.wrapper;
public class TestMain
{
public static void main(String[] args)
{
//wrapper 클래스
//오토박싱, 오토언박싱 : 기본형 <-> 참조형 자동 형변환
int n = 10; //기본형으로 10생성
Integer n2 = new Integer(10); //참조형(클래스)으로 10생성
System.out.println(n);
System.out.println(n2); //n2.toString()
//wrapper 클래스 제공 이유 => 유용한 메서드 및 상수 활용
System.out.println(Integer.MIN_VALUE); //-2147483648
System.out.println(Integer.MAX_VALUE); //2147483647
//"10" -> 10
int x = Integer.parseInt("10");
System.out.println(x); //10
//100 -> "100"
String s = String.valueOf(100);
System.out.println(s); //100
//최대값 얻기
int max = Integer.max(100, 101);
int min = Integer.min(100, 101);
int sum = Integer.sum(100, 101);
System.out.println(max); //101
System.out.println(min); //100
System.out.println(sum); //201
}
}
package com.wrapper;
public class TestMain2
{
public static void main(String[] args)
{
//wrapper 클래스
//오토박싱, 오토언박싱 : 기본형 <-> 참조형 자동 형변환
int n = 10;
Integer n2 = new Integer(10);
//1.오토박싱 : 기본형 -> 참조형 자동 형변환
Integer x = n;
//2.오토언박싱 : 참조형 -> 기본형 자동 형변환
int x2 = x;
System.out.println(x);
System.out.println(x2);
}
}
5.컬렉션(Collection API)
-데이터 저장 방법
-특징
1)다양한 자료구조 2)참조형만 저장가능(기본형 불가)
3)컬렉션은 참조형 4)크기변경 가능
5)type이 달라도 저장가능
-자료구조
1)Set 계열 : 값만 저장, 순서X, 중복 저장X
->HashSet
package com.set;
import java.util.*;
public class SetTest
{
public static void main(String[] args)
{
/*
Set계열
-순서 없고 중복 불가
-HashSet 클래스 사용
<E> ==> 제네릭스(generics)
용도 : 저장할 데이터 타입 제한용도
*/
// HashSet set = new HashSet();
Set set = new HashSet(); //다형성
set.add("홍길동");
set.add(222);
set.add(3.13);
set.add("홍길동"); //중복안됨
set.add(true);
set.add(222); //중복안됨
set.add(3.13); //중복안됨
//문자열만 가져오자? instanceof 로 ...
for (Object obj : set)
{
if(obj instanceof String)
{
System.out.println(obj);
}
}
//출력하기1
System.out.println(set); //toString()
//출력하기2
for(Object obj : set)
{
System.out.println("<<" + obj);
}
//출력하기3
Iterator iter = set.iterator();
while(iter.hasNext())
{
System.out.println("$$" + iter.next());
}
System.out.println("포함여부 : " + set.contains("홍길동"));
System.out.println("포함여부 : " + set.contains("이순신"));
System.out.println("삭제 : " + set.remove("홍길동"));
System.out.println("삭제 : " + set.remove("이순신"));
System.out.println(set);
System.out.println("크기 : " + set.size());
//clear
set.clear();
System.out.println(set);
}
}
package com.set;
import java.util.*;
public class SetTest2
{
public static void main(String[] args)
{
/*
Set계열
-순서 없고 중복 불가
-HashSet 클래스 사용
<E> ==> 제네릭스(generics)
용도 : 저장할 데이터 타입 제한용도
-기본형 데이터는 저장할 때는 반드시 wrapper 사용
-저장할 때는 기본형 사용가능(오토박싱)
*/
//제네릭스 -> 기본형 데이터 저장 wrapper클래스 이용
HashSet<Integer> kk1 = new HashSet<Integer>();
kk1.add(10);
HashSet<Boolean> kk2 = new HashSet<Boolean>();
kk2.add(true);
HashSet<Float> kk3 = new HashSet<Float>();
kk3.add(3.14f);
HashSet<Character> kk4 = new HashSet<Character>();
kk4.add('A');
//제네릭스 -> 이름만 저장
HashSet<String> set = new HashSet<String>();
set.add("홍길동1");
set.add("홍길동2");
// set.add(20); //문자열만 저장가능
//출력하기1
System.out.println(set);
//출력하기2
for(String str : set)
System.out.println(">>" + str);
//출력하기3
Iterator<String> iter = set.iterator();
while(iter.hasNext())
System.out.println("$$" + iter.next());
}
}
2)List 계열 : 값만 저장, 배열과 비슷한 구조, 순서O, 중복 저장O
->ArrayList
package com.list;
import java.util.*;
public class ListTest
{
public static void main(String[] args)
{
/*
List 계열
-순서있고 중복허용
-ArrayList 클래스 사용
*/
// ArrayList<String> list = new ArrayList<String>();
List<String> list = new ArrayList<String>(); //다형성
list.add("홍길동"); list.add("이순신"); list.add("유관순");
list.add("홍길동"); list.add("이순신"); list.add("유관순"); //중복가능
//출력하기1
System.out.println(list); //toString
//출력하기2
for(String s : list)
System.out.println(">>" + s);
//출력하기3
for(int i = 0; i < list.size(); i++)
System.out.println("##" + list.get(i));
//출력하기4
Iterator<String> iter = list.iterator();
while(iter.hasNext())
System.out.println("$$" + iter.next());
}
}
package com.list;
import java.util.*;
public class ListTest2
{
public static void main(String[] args)
{
/*
List 계열
-순서있고 중복허용
-ArrayList 클래스 사용
*/
//CRUD : create(저장), read(읽기, 조회), update(수정), delete(삭제)
List<String> list = new ArrayList<String>(); //다형성
//method
//추가
list.add("홍길동"); list.add("이순신"); list.add("유관순");
//삽입
list.add(0, "강감찬");
//수정
list.set(1, "아버지");
//삭제
list.remove(0); //위치
list.remove("아버지"); //값
System.out.println("특정 값의 위치 : " + list.indexOf("이순신"));
//배열로 바꾸기
Object[] arr = list.toArray();
System.out.println(Arrays.toString(arr));
//출력
System.out.println(list);
}
}
package com.list;
import java.util.*;
public class ListTest3
{
public static void main(String[] args)
{
//List를 매우 쉽게 만드는 법
//1.기본적인 방법
List<String> list = new ArrayList<String>(); //다형성
list.add("홍길동"); list.add("이순신"); list.add("유관순");
System.out.println(list);
//2.Arrays 유틸리티 이용하는 방법
List<String> list2 = Arrays.asList("홍길동", "이순신", "유관순");
System.out.println(list2);
List<Integer> list3 = Arrays.asList(0, 1, 2, 3, 4);
System.out.println(list3);
//이름과 나이 저장
//홍길동/20, 이순신/40, 유관순/18
List<Object> xxx = new ArrayList<Object>();
xxx.add("홍길동"); xxx.add(20);
xxx.add("이순신"); xxx.add(40);
xxx.add("유관순"); xxx.add(18);
//다음 방법이 가장 많이 사용되는 형태이다
List<Person> xxx2 = new ArrayList<Person>();
xxx2.add(new Person("홍길동", 20));
xxx2.add(new Person("이순신", 40));
xxx2.add(new Person("유관순", 18));
List<Person> xxx3
= Arrays.asList(new Person("홍길동", 20), new Person("이순신", 40), new Person("유관순", 18));
for(Person p : xxx2)
System.out.println(p);
Iterator<Person> iter = xxx2.iterator();
while(iter.hasNext())
System.out.println(iter.next());
}
}
class Person
{
String name;
int age;
public Person() {}
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
//getter
public String getName() { return name; }
public int getAge() { return age; }
//setter
public void setName(String name) { this.name = name; }
public void setAge(int age) { this.age = age; }
//toString 재정의
@Override
public String toString() { return "[name=" + name + ", age=" + age + "]"; }
}
※가변인자
package com.list;
import java.util.Arrays;
public class 가변인자 {
public static void a2(int... n)
{
System.out.println(Arrays.toString(n));
}
public static void main(String[] args)
{
a2(10);
a2(10, 20);
a2(10, 20, 1, 2, 34, 4, 5);
}
}
3)Map 계열 : 값 + 이름(키) 쌍으로 저장
->HashMap
package com.map;
import java.util.*;
public class MapTest
{
public static void main(String[] args)
{
/*
Map 계열
-Collection API 무관
-key/value(name/value) 쌍으로 저장
-key를 이용해서 대부분 관리
-제네릭스 지원
-HashMap 클래스 사용
-Set과 동일하게 순서없이 저장
*/
// HashMap<String, String> map = new HashMap<String, String>();
Map<String, String> map = new HashMap<String, String>(); //다형성
//저장
map.put("A1", "홍길동1");
map.put("A2", "홍길동2");
map.put("A3", "홍길동3");
map.put("A3", "이순신"); //동일한 key인 경우 덮어쓰기 됨
//출력1
System.out.println(map); //toString()
//출력2
System.out.println(map.get("A1"));
System.out.println(map.get("A2"));
System.out.println(map.get("A4")); //존재하지 않는 key접근 -> null반환
//출력3 ==> key값을 먼저 얻고 나중에 value값 얻기
Set<String> keys = map.keySet(); //데이터가 많거나 또는 키값을 모를 때 사용
for(String key : keys)
System.out.println(key + " : " + map.get(key));
Iterator<String> iter = keys.iterator();
while(iter.hasNext())
{
String s = iter.next();
System.out.println(s + " | " + map.get(s));
}
}
}
package com.map;
import java.util.*;
public class MapTest2
{
public static void main(String[] args)
{
//Map 계열
Map<String, String> map = new HashMap<String, String>(); //다형성
//저장
map.put("A1", "홍길동1");
map.put("A2", "홍길동2");
map.put("A3", "홍길동3");
//method
//size()
System.out.println(map.size());
//replace()
System.out.println(map.replace("A3", "유관순")); //replace 변경전 값 반호나
//remove()
map.remove("A1");
//clear()
map.clear();
System.out.println(map);
}
}
4)중첩 컬렉션(nested Collection)
package com.nested;
import java.util.*;
public class TestMain
{
public static void main(String[] args)
{
//중첩 컬렉션
//Map안에 List
Map<String, ArrayList<String>> map
= new HashMap<String, ArrayList<String>>();
//List안에 Map
List<Map<String, String>> list = new ArrayList<Map<String,String>>();
//Set안에 List
Set<List<String>> set = new HashSet<List<String>>();
}
}
'JAVA' 카테고리의 다른 글
13.Java Wep Application/Servlet (0) | 2022.08.01 |
---|---|
12.Java JDBC (0) | 2022.07.26 |
10.Java 예외처리/String클래스 (0) | 2022.07.15 |
9.Java 인터페이스/중첩클래스/예외처리 (0) | 2022.07.14 |
8.Java 오버라이딩/super/다형성/toString/추상클래스 (0) | 2022.07.13 |