package chapter13;
import java.util.ArrayList;
import java.util.List;
public class ListEx {
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);list.add(2);
list.add(3);list.add(4);
list.add(5);list.add(6);
System.out.println(list);
for(int i=0;i<list. size();i++) {
System.out.println(i+":"+ list.get(i));
}
}
}
package chapter13;
import java.util.Vector;
public class ListEx2 {
public static void main(String[] args) {
Vector list = new Vector();
list.add(1.2); // List 메서드
list.add(Math.PI); // List 메서드
list.addElement(3.4); // 이전 메서드
// 향상된 for문
for (Object o : list) {
System.out.println(o);
}
double num = 3.4;
// 해당 요소의 인덱스 (없으면 -1)
int index = list.indexOf(num);
if (index >= 0) { // 요소가 존재함
System.out.println(num + " 의 위치 :" + index);
} else { // 존재하지 않음
System.out.println(num + " 는 list 에 없습니다");
}
num = 1.2;
// 값이 존재하는지 확인
if (list.contains(num)) {
// 제거(이전 메서드)
list.removeElement(num);
System.out.println(num + " 삭제됨");
}
// 해당 요소의 인덱스 (없으면 -1)
System.out.println(list.indexOf(num));
System.out.println(list); // toString()
}
}
Shape.java
abstract class Shape {
// 필드
int x, y;
// 생성자
Shape() {
this(0, 0);
}
Shape(int x, int y) {
this.x = x;
this.y = y;
}
// 추상메서드
abstract double area();
abstract double length();
// 일반 메서드
public String getLocation() {
return "x:" + x + ",y:" + y;
}
}
Circle.java
package chapter13;
public class Circle extends Shape {
// 필드
double r;
// 생성자
Circle() {
this(1);
}
Circle(double r) {
this.r = r;
}
// 메서드 재정의(오버라이딩)
@Override
double area() {
return (r * r) * Math.PI;
}
@Override
double length() {
return (r * 2) * Math.PI;
}
}
Rectangle.java
package chapter13;
public class Rectangle extends Shape {
// 필드
int w,h;
// 생성자
Rectangle() {
this(1,1);
}
Rectangle(int w, int h) {
this.w = w;
this.h = h;
}
// 메서드 재정의(오버라이딩)
@Override
double area() {
return (w * h);
}
@Override
double length() {
return (w + h) * 2;
}
}
ListEx3.java
package chapter13;
import java.util.ArrayList;
import java.util.List;
public class ListEx3 {
public static void main(String[] args) {
List list = new ArrayList();
// list 객체에 요소 추가
list.add(new Circle(3.0));
list.add(new Rectangle(3, 4));
list.add(new Circle(5));
list.add(new Rectangle(5,6));
System.out.println(" 전체 도형의 면적의 합 :" + sumArea(list));
System.out.println(" 전체 도형의 둘레의 합 :" + sumLength(list));
}
private static double sumLength(List list) {
double sumlength = 0;
for (int i=0; i<list.size(); i++) {
// list 객체 형변환
Shape s = (Shape)list.get(i);
sumlength += s.length();
}
return sumlength;
}
private static double sumArea(List list) {
double sumarea = 0;
for (int i = 0; i < list.size(); i++) {
// list 객체 형변환과 메서드 호출 동시에
sumarea += ((Shape)list.get(i)).area();
}
return sumarea;
}
}
package chapter13;
import java.util.ArrayList;
import java.util.LinkedList;
public class ArrayListCompareLinkedList {
public static void main(String[] args) {
ArrayList alist = new ArrayList();
LinkedList llist = new LinkedList();
for (int i=0; i<100000; i++) {
alist.add(i);
llist.add(i);
}
System.out.println("ArrayList Access");
long start = System.currentTimeMillis();
for (int i=0; i<alist.size(); i++) {
alist.get(i);
}
long end = System.currentTimeMillis();
System.out.println(end-start);
System.out.println("LinkedList Access");
start = System.currentTimeMillis();
for (int i=0; i<llist.size(); i++) {
llist.get(i);
}
end = System.currentTimeMillis();
System.out.println(end-start);
}
}
package chapter13;
import java.util.ArrayList;
import java.util.LinkedList;
public class ArrayListCompareLinkedList2 {
public static void main(String[] args) {
ArrayList alist = new ArrayList();
LinkedList llist = new LinkedList();
for (int i=0; i<100000; i++) {
alist.add(i);
llist.add(i);
}
System.out.println("ArrayList 추가");
long start = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
alist.add(500, "i");
}
long end = System.currentTimeMillis();
System.out.println(end-start);
System.out.println("LinkedList 추가");
start = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
llist.add(500, i+"");
}
end = System.currentTimeMillis();
System.out.println(end-start);
}
}
HashSet
package chapter13;
import java.util.HashSet;
import java.util.Set;
public class HashSetEx {
public static void main(String[] args) {
// Object타입의 배열 생성
Object[] arr = {"홍길동","이순신","홍길동","이순신",1,2,"1","2"};
// HashSet 객체 생성
Set set = new HashSet();
// set객체에 배열의 모든 요소 add
for(int i=0;i < arr.length;i++) {
set.add(arr[i]);
}
// 출력
System.out.println(set);
}
}
package chapter13;
import java.util.HashSet;
import java.util.Set;
public class HashSetEx2 {
public static void main(String[] args) {
// HashSet 객체 생성
Set set = new HashSet();
// 문자열 객체 두개 추가
set.add(new String("abc"));
set.add(new String("abc"));
// Member 객체 두개 추가(사용자 정의 클래스)
set.add(new Member("홍길동 ", 40));
set.add(new Member("고길동 ", 40));
// 출력
System.out.println(set);
}
}
package chapter13;
public class Member {
// 필드
String name;
int age;
// 생성자
Member (String name, int age) {
this.name = name;
this.age = age;
}
// toSring() 메서드 재정의
@Override
public String toString() {
return "("+ name + "," + age + ")";
}
// equals() 메서드 재정의
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member m = (Member)obj;
return this.name.equals(m.name) && this.age == m.age;
} else {
return false;
}
}
// hashCode() 메서드 재정의
@Override
public int hashCode() {
return this.name.hashCode() + age;
}
}
TreeSet
Descend.java
package chapter13;
import java.util.Comparator;
public class Descend implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Comparable c1 = (Comparable)o1;
Comparable c2 = (Comparable)o2;
return c1.compareTo(c2) * (-1);
}
}
TreeSetEx.java
package chapter13;
import java.util.SortedSet;
import java.util.TreeSet;
public class TreeSetEx {
public static void main(String[] args) {
SortedSet set = new TreeSet();
String from = "bat";
String to = "d";
// set객체에 추가
set.add("ant");set.add("alias");
set.add("batman");set.add("aha");
set.add("cola");set.add("Cola");
set.add("ddr");set.add("dance");
set.add("dEEE");set.add("deee");
set.add("ever"); set.add("giant");
set.add("zoo");
// 출력
System.out.println(set);
System.out.println("from:"+from+",to:"+to);
// from~to 검색
System.out.println(set.subSet(from, to));
System.out.println("from:"+from+",to:"+to+"zzzz");
// from~to+"zzzz" 검색
System.out.println(set.subSet(from,to+"zzzz"));
// 내림차순 정렬
set = new TreeSet(new Descend());
set.add("ant");set.add("alias");
set.add("batman");set.add("aha");
set.add("cola");set.add("Cola");
set.add("ddr");set.add("dance");
set.add("dEEE");set.add("deee");
set.add("ever"); set.add("giant");
set.add("zoo");
System.out.println(set);
System.out.println("from:"+from+",to:"+to);
// to~from (반대로 검색)
System.out.println(set.subSet(to, from));
}
}
Member2.java
package chapter13;
public class Member {
// 필드
String name;
int age;
// 생성자
Member (String name, int age) {
this.name = name;
this.age = age;
}
// toSring() 메서드 재정의
@Override
public String toString() {
return "("+ name + "," + age + ")";
}
// equals() 메서드 재정의
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member m = (Member)obj;
return this.name.equals(m.name) && this.age == m.age;
} else {
return false;
}
}
// hashCode() 메서드 재정의
@Override
public int hashCode() {
return this.name.hashCode() + age;
}
}
AgeDesc.java
package chapter13;
import java.util.Comparator;
public class AgeDesc implements Comparator {
@Override
public int compare(Object o1, Object o2) {
// Member2로 형변환
Member2 m1 = (Member2)o1;
Member2 m2 = (Member2)o2;
// 나이로 내림차순 정렬
return m2.age - m1.age;
}
}
NameDesc.java
package chapter13;
import java.util.Comparator;
public class NameDesc implements Comparator {
@Override
public int compare(Object o1, Object o2) {
// Member2로 형변환
Member2 m1 = (Member2)o1;
Member2 m2 = (Member2)o2;
// 이름으로 내림차순 정렬
return m1.compareTo(m2) * (-1);
}
}
TreeSetEx2.java
package chapter13;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetEx2 {
public static void main(String[] args) {
// 이름순으로 정렬
TreeSet set = new TreeSet();
set.add(new Member2("홍길동 ",30));
set.add(new Member2("이순신 ",40));
set.add(new Member2("김유신 ",50));
System.out.println(set);
// 나이 오름차순으로 정렬하여 출력 (익명 클래스로 인터페이스 구현)
TreeSet set2 = new TreeSet(new Comparator(){
@Override
public int compare(Object o1, Object o2) {
Member2 m1 = (Member2)o1;
Member2 m2 = (Member2)o2;
return m1.age - m2.age;
}
});
set2.add(new Member2("홍길동 ",30));
set2.add(new Member2("이순신 ",40));
set2.add(new Member2("김유신 ",50));
System.out.println(set2);
// 이름의 내림차순으로 정렬하여 출력
TreeSet set3 = new TreeSet(new NameDesc());
set3.add(new Member2("홍길동 ",30));
set3.add(new Member2("이순신 ",40));
set3.add(new Member2("김유신 ",50));
System.out.println(set3);
// 나이의 내림차순으로 정렬하여 출력
TreeSet set4 = new TreeSet(new AgeDesc());
set4.add(new Member2("홍길동 ",30));
set4.add(new Member2("이순신 ",40));
set4.add(new Member2("김유신 ",50));
System.out.println(set4);
}
}
package chapter13;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class IteratorEx {
public static void main(String[] args) {
// Iterator 객체 선언
Iterator it = null;
// List 객체와 Set 객체 생성
List list = new ArrayList();
Set set = new HashSet();
// list와 set에 5개의 값 추가
for(int i=1; i<=5;i++) {
list.add(i);
set.add(i+5);
}
// 출력
System.out.println(list);
System.out.println(set);
// list에서 Iterator 객체로 생성
it = list.iterator();
// lit의 Iterator 객체 출력
System.out.println("List Iterator 출력");
iteratorPrint(it);
// set에서 Iterator 객체로 생성
it = set.iterator();
// set의 Iterator 객체 출력
System.out.println("Set Iterator 출력");
iteratorPrint(it);
// 출력
System.out.println(list);
System.out.println(set);
}
private static void iteratorPrint(Iterator it) {
// Iterator 객체 반복 (다음 요소가 있으면 반복)
while(it.hasNext()) {
// Iterator 객체의 다음 요소 읽어와 출력
System.out.println(it.next());
// 현재 요소 삭제
it.remove();
}
}
}
package chapter13;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
public class EnumerationEx {
public static void main(String[] args) {
Vector v = new Vector();
for(int i=1; i<= 5;i++) {
v.add(i);
}
// Enumeration 으로 출력
Enumeration e = v.elements();
System.out.println("Enumeration 출력");
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
// Iterator로 출력
Iterator it = v.iterator();
System.out.println("Iterator 출력");
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
package chapter13;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class IterVSsize {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for (int i=0; i<100000000; i++) {
list.add(i);
}
// Iterator 실행 시간
long start = System.currentTimeMillis();
Iterator it = list.iterator();
while (it.hasNext()) {
it.next();
}
long end = System.currentTimeMillis();
System.out.println("Iterator 소요 시간 : "+(end-start));
// size 실행 시간
start = System.currentTimeMillis();
for (int i=0; i<list.size(); i++) {
list.get(i);
}
end = System.currentTimeMillis();
System.out.println("size() 소요 시간 : "+(end-start));
}
}
package chapter13;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorEx {
public static void main(String[] args) {
// 리스트 객체 생성
List list = new ArrayList();
// 리스트 객체에 값 추가
for(int i=1;i<=5;i++) {
list.add(i);
}
// ListIterator 객체 생성
ListIterator lit = list.listIterator();
// 다음 요소 반복 출력
while(lit.hasNext()) {
System.out.println(lit.next());
}
// 이전 요소 반복 출력
while(lit.hasPrevious()) {
System.out.println(lit.previous());
}
}
}
HashMap
package chapter13;
import java.util.HashMap;
import java.util.Map;
public class HashMapEx {
public static void main(String[] args) {
// Map 객체 생성
Map map =new HashMap();
// 이름이 담긴 문자열 배열 생성
String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
// 숫자가 담긴 정수 배열 생성
int[] nums = {1234,4567,2350,9870,2345};
// Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
for(int i=0;i<names.length;i++) {
map.put(names[i], nums[i]);
}
// 출력
System.out.println(map);
System.out.println("홍길동 번호 :" + map.get("홍길동"));
System.out.println("이순신 번호 :" + map.get("이순신"));
System.out.println("김유신 번호 :" + map.get("김유신"));
}
}
package chapter13;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapEx2 {
public static void main(String[] args) {
// Map 객체 생성
Map map =new HashMap();
// 이름이 담긴 문자열 배열 생성
String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
// 숫자가 담긴 정수 배열 생성
int[] nums = {1234,4567,2350,9870,2345};
// Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
for(int i=0;i<names.length;i++) {
map.put(names[i], nums[i]);
}
//Map 객체에서 key 들만 조회하기
Set<String> keys = map.keySet();
for(String key : keys) {
System.out.println(key + "=" + map.get(key));
}
System.out.println("Iterator로 출력");
Iterator it = keys.iterator();
while(it.hasNext()) {
String a = (String)it.next();
System.out.println(a+"="+map.get(a));
}
}
}
package chapter13;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapEx3 {
public static void main(String[] args) {
// Map 객체 생성
Map map =new HashMap();
// 이름이 담긴 문자열 배열 생성
String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
// 숫자가 담긴 정수 배열 생성
int[] nums = {1234,4567,2350,9870,2345};
// Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
for(int i=0;i<names.length;i++) {
map.put(names[i], nums[i]);
}
//Map 객체에서 value 들만 조회하기
Collection values = map.values();
// 향상된 for문으로 출력
for(Object i : values) {
System.out.println(i);
}
// Iterator 객체로 출력
Iterator it = values.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
package chapter13;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class HashMapEx4 {
public static void main(String[] args) {
// Map 객체 생성
Map map =new HashMap();
// 이름이 담긴 문자열 배열 생성
String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
// 숫자가 담긴 정수 배열 생성
int[] nums = {1234,4567,2350,9870,2345};
// Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
for(int i=0;i<names.length;i++) {
map.put(names[i], nums[i]);
}
// Map 객체는 (키,값) 쌍으로 이루어진 객체들의 모임
// (키, 값) 쌍으로 조회하기
Set entry = map.entrySet();
for(Object o : entry) {
Map.Entry m = (Map.Entry)o;
System.out.println("key:"+m.getKey() + ", value:" + m.getValue());
}
}
}
Properties
package chapter13;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesEx {
public static void main(String[] args) {
try {
Properties pr = new Properties();
// properties 파일 읽어오기
FileInputStream reader = new FileInputStream(
"C:/java/workspace/test/src/chapter13"
+ "/config.properties");
// Properties 객체에 로드
pr.load(reader);
System.out.println(pr);
System.out.println(" 이름 :" + pr.get("name"));
// property에 키,값으로 추가
pr.put("subject", " 자바");
System.out.println(pr);
// properties 파일로 출력
pr.store(new FileOutputStream(
"C:/java/workspace/test/src/chapter13/"
+ "test.properties"), "#save");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Share Alike 4.0 International