java.utilパッケージ


Randomクラス


Random.nextInt()


0からパラメータで受信した数値(-1)までのランダムな整数を作成
import java.util.Random;

public class RandomTest1 {

	public static void main(String[] args) {
		Random random = new Random();
		
		System.out.println("[ 학생들의 시험 유형 ]");
		for (int i = 1; i <= 10; i++) {
			System.out.print(i + "번 학생의 시험 유형 : ");
			
			int examType = random.nextInt(5) + 1;			
			switch (examType) {
				case 1 :
					System.out.println("A");
					break;
				case 2 :
					System.out.println("B");
					break;
				case 3 :
					System.out.println("C");
					break;
				case 4 :
					System.out.println("D");
					break;
				case 5 :
					System.out.println("E");
			}
		}
	}
}

Arraysクラス


1. Arrays.sort()

  • 昇順ソート
  • int,String同
  • int[] arr = {3, 4, 76, 12, 44, 5, 8};  // int 오름차순 
    String[] arr2 = {"q", "j", "s", "f"};  // String 오름차순 
    Arrays.sort(arr);
    Arrays.sort(arr2);

    2. Arrays.sort(arr2 ,Collections.reverseOrder());

  • Stringタイプ降順
  • intタイプ降順->Integerタイプのアレイに変更する必要があります
  • Integer[] arr3 = Arrays.stream(arr).boxed().toArray(Integer[]::new);
    Arrays.sort(arr3, Collections.reverseOrder());

    3. Arrays.sort( , )

  • 部分ソート(出力はすべて次ですが、2番目から4番目のみ)
  • Arrays.sort(arr, 1, 3);
    Arrays.sort(arr, 1, 3, Collections.reverseOrder());

    4. Arrays.copyOf( , )

  • 特定の配列の内容をコピーして新しい配列オブジェクトを作成
  • 	private static int[] copyOf(int[] scoreList, int length) {
    		int[] copyList = new int[length];  // length 길이 만큼의 배열 생성 
    		for (int i = 0; i < scoreList.length; i++) {
    			copyList[i] = scoreList[i];  // scoreList -> copyList 복사
    		}
    		return copyList;
    	}
    
    		int[] scoreList = {83, 74, 65, 99, 92};
    		Arrays.sort(scoreList);
            int[] copyList = Arrays.copyOf(scoreList, 10);
            for (int score : copyList) {
    			System.out.print("[" + score + "] ");
    		}

    StringTokenizerクラス


    知らなくてもいいです.
    文字列を&で区切る(&=タグ)
    Stringクラスのsplitと同じ

    Date,Calendarクラス

  • date:月次年(簡易情報出力)
    calender:マルチ情報出力→簡潔(使いにくい)
  • import java.util.Calendar;
    import java.util.Date;
    
    public class DateTest1 {
    	public static void main(String[] args) {
        
    		Date date = new Date();
    		System.out.println(date.toString());
            // Fri Oct 08 17:38:53 KST 2021
    		
    		Calendar currentDate = Calendar.getInstance();
    		System.out.println(currentDate.toString());
            // java.util.GregorianCalendar[time=1633682333978,areFieldsSet
            //=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.
            //ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,
            //useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek
            //=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=9,
            //WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=281
            //,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=5,
            //HOUR_OF_DAY=17,MINUTE=38,SECOND=53,MILLISECOND=978,ZONE_OFFSET
            //=32400000,DST_OFFSET=0]
    	}
    }
  • Calenderクラスはnew→デバッガジェネレータなしまたはプライベート禁止
  • staticメソッド→クラス名呼び出し->Calendar.getInstance();
  • ArrayListクラス


    < List < Collection

    1.収集の概要

  • コレクション=データが1つの場所に集約
  • 配列も集合(集合はすべての内部で配列を使用する)
  • 背景:arrays.copyof()を使用して配列を大きくし、新しいデータを挿入します->
    配列の最大の欠点は、長さが固定されていること→新しい配列の作成を継続する必要があること、メモリの浪費→集合の出現(list、set、map)-より多く、最も重要な3種類(マルチインタフェース)
  • オブジェクトを作成するのではなく、階層の最上位の親として使用するインタフェースを作成します
  • インタフェース間の継承可能→定数、抽象継承
  • mapは独立したインタフェースであり、親がいない->オブジェクトを作成できない→インプリメンテーションを使用するクラス

  • 2.特徴

  • ArrayListがデバッガを生成すると、10個の空間がデバッガされます
    (11番目のデータを追加する場合、10個、合計20個の記憶領域を自動的に増加)
  • add→オブジェクトを挿入し、前後から順に
  • に入る
  • add→objectタイプのパラメータ→トップクラス、すべてのクラスが暗黙的に変換(暗黙的にオブジェクトに変換)void add(Object abj) { }
  • import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    public class ListTest1 {
    
    	public static void main(String[] args) {
        
    		List objectList = new ArrayList();     //10개 빈공간 디폴트 
            
    		objectList.add(93);        
    		objectList.add(Double.valueOf(85.7));   
    		objectList.add(new Date());
            //add의 매개변수 타입 object -> Object로 타입 바뀌어서 들어감 (업캐스팅)
    		
    		Integer intData = (Integer) objectList.get(0);
    		System.out.println(intData.toString());
    		
    		Double doubleData = (Double) objectList.get(1);
    		System.out.println(doubleData.toString());
    		
    		Date dateData = (Date) objectList.get(2);
    		System.out.println(dateData.toString());
    	}
    }
  • Object intData = objectList.get(0); 可能性もある.
    オブジェクトタイプとして受信する場合、オブジェクトクラスのメソッドとメンバー変数のみが使用可能になるため、明示的に使用に変換できます.
    ->Integerクラスが提供するメソッドが使用可能(サブクラスにはより多くの変数とメソッドが含まれています)
  • 3. Generic

  • 汎用タイプがない場合は、すべてのタイプのオブジェクトが使用可能→他のタイプのオブジェクトが格納されている場合はforループが無効→汎用タイプが使用されている場合はintタイプのオブジェクトのみが格納されるようにタイプを制限→addが使用されている場合はエラー
  • |𐥍7|Dateタイプのオブジェクトはintegerに変換されません|𐥎
    // 요즘방식 제너릭
    public class ListTest1 {
    
    	public static void main(String[] args) {
        
    		List<Integer> scoreList = new ArrayList<Integer>();
            
    		scoreList.add(Integer.valueOf(83));
    		scoreList.add(Integer.valueOf(69));
    		scoreList.add(Integer.valueOf(92));
            
    		scoreList.add(new Date());  //에러                  
    		scoreList.add(new String("Test"));  //에러 
    
    		for (Integer score : scoreList) {
    			System.out.println(score.intValue());
    		}
    	}
    }
  • アレイリストでパラメータ付き作成者を使用可能→アレイの数を変更List<Student> studentList = new ArrayList<Student>(3);→4番目のオブジェクトを入れると、配列が10個に増える
    →4番目のオブジェクトを入れる場合、size()=4
  • 4.ArrayListメソッド


    方法説明size():intオブジェクトのカウント戻り追加(Object obj):booleanは特定のオブジェクトを登録し、成功した場合true、失敗した場合falseはget(int index):Objectindexの位置にあるオブジェクトを削除し、削除オブジェクトはremove(Object obj):boolean特定のオブジェクトを削除し、成功した場合true、失敗した場合falsecontains(Object obj):boolean固有のオブジェクトが存在するかどうかを確認します.オブジェクトが存在する場合はtrueを返し、オブジェクトが存在しない場合はfalseを返します.
    List<Integer> scoreList = new ArrayList<Integer>(3);
    
    scoreList.add(Integer.valueOf(83));
    scoreList.add(Integer.valueOf(68));
    scoreList.add(Integer.valueOf(92));
    scoreList.add(Integer.valueOf(100));
    
    System.out.println(scoreList.get(1));  // 68
    scoreList.remove(1);
    scoreList.contains(Integer.valueOf(68)));  // false
    System.out.println(scoreList.size());  // 3
    System.out.println(scoreList.get(1));  // 92 (땡김) 
  • remove→空白空間を前方に伸ばす→インデックスも変化する(空白は許されない)
  • get:暗黙変換(オブジェクトタイプに変換)
  • 最初から数を決めるときにアレイを使う(アレイリストは自動的に長さを増やす)
  • 5.ArrayList例

  • ArrayList->アップロードリスト
  • 拡張サイズ、冗長O、繰返しX、シーケンスX
  • ループ最高点を求める(集合の目的はこれだけ)
  • import java.util.ArrayList;
    import java.util.List;
    
    public class ListTest3 {
    
    	public static void main(String[] args) {
    		List<Student> studentList = new ArrayList<Student>();  // 업캐스팅		
    		Student kim = new Student("STD-000001", "김둘리", 83, "컴퓨터 공학");
    		studentList.add(kim);
    		studentList.add(new Student("STD-000002", "박또치", 100, "컴퓨터 공학"));
    		studentList.add(new Student("STD-000003", "도우너", 75, "기계 공학"));
    		studentList.add(new Student("STD-000004", "마이콜", 49, "산업 공학"));
    		studentList.add(new Student("STD-000004", "마이콜", 49, "산업 공학"));
    		
    		System.out.println("[ 학생 목록 ]");
    		for (Student student : studentList) {
    			System.out.println(student.toString());
    		}
            
            int sum = 0;
    		int count = 0;
    		for (Student student : studentList) {
    			if(student.getMajor().equals("컴퓨터 공학")) {
    				sum = sum + student.getScore();
    				count++;
    			}
    		}
    		System.out.println("컴퓨터 공학 평균 점수 : " + (double) sum/count);
           
           		
                System.out.println("[ 80점 이상의 고득점자 현황 ]");
    		    for (Student student : studentList) {
    			    if(student.getScore() >= 80) {
    				       System.out.println(student.toString());
    			}
    		}
            
    	}
    }

    HashSetクラス


    < Set < Collection
  • HashSet->Set Upcasting
  • setはインタフェース→オブジェクトを作成できませんのでhashset
  • を使用します.
  • ArrayList vs. HashSet
  • O/X->を繰り返しますが、toString、equals、hashcode
  • を再定義する必要があります.
  • 順序O/X->.get(i) O/X
  • import java.util.ArrayList;
    import java.util.List;
    
    public class ListTest3 {
    
    	public static void main(String[] args) {
        
    		HashSet<Student> studentList = new HashSet<Student>();		
            
    		Student kim = new Student("STD-000001", "김둘리", 83, "컴퓨터 공학");
    		studentList.add(kim);
       
            //위 두줄을 아래 한줄로 가능 
    		studentList.add(new Student("STD-000002", "박또치", 100, "컴퓨터 공학"))
            studentList.add(new Student("STD-000003", "도우너", 75, "기계 공학"));
    		studentList.add(new Student("STD-000004", "마이콜", 49, "산업 공학"));
    		studentList.add(new Student("STD-000004", "마이콜", 49, "산업 공학"));
    		
    		System.out.println("[ 학생 목록 ]");
    		for (Student student : studentList) {
    			System.out.println(student.toString());
    		}
    	}
    }
    import java.util.Objects;
    
    public class Student {
    
    ...
    
    	@Override
    	public int hashCode() {
    		return Objects.hash(major, name, score, studentNo);
    	}
    
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Student other = (Student) obj;
    		return Objects.equals(major, other.major)
    			&& Objects.equals(name, other.name) && score == other.score
    			&& Objects.equals(studentNo, other.studentNo);
    	}
    
    	@Override
    	public String toString() {
    		return "Student [studentNo=" + studentNo + ", name=" + name + ", score="
    				+ score + ", major=" + major + "]";
    	}
    }

    HashMapクラス


    < Map
  • HashMap->Mapオンライン
  • Mapセットは、リスト、Setとは異なるキーと値でデータを格納する
    (鍵、価値のあるタイプを指定可能)
  • 親なし
  • オリジナルMapのキー、価値はオブジェクト
    作成したオブジェクトを参照変数に配置せず、メソッドのパラメータとして直接使用します
  • 保存=put()(addではなく)、削除=remove(キー)→キーが削除されます
  • マッピングを使用する理由:情報をキー値として保存→クイック検索(.get()
  • 鍵が重複し価値が異なる場合は上書き(overLiting)→4個保存し、2個が重複する場合は3個
  • import java.util.HashMap;
    import java.util.Map;
    
    public class MapTest1 {
    	
    	public static void main(String[] args) {  //키, 밸류의 타입 제너릭 
        
    		Map<String, Student> studentList = new HashMap<String, Student>();		
            
    		Student kim = new Student("STD-000001", "김둘리", 83, "컴퓨터 공학");
    		studentList.put("STD-000001", kim);  // 저장
            
            // 위 두줄을 한줄로 가능 
    		studentList.put("STD-000002", 
    		new Student("STD-000002", "박또치", 100, "컴퓨터 공학"));
    		studentList.put("STD-000003", 
    		new Student("STD-000003", "도우너", 75, "기계 공학"));
    		
    		System.out.println("[ STD-000002 학생의 정보]");
    		System.out.println(studentList.get("STD-000002"));  // 검색
    	}
    }

  • キーリスト、バリューリストのみをポップアップできます
  • KeySet()=設定タイプのオブジェクトのみを返す
  • values()(Valueのみ)
  • 彼女はMapの方法ですか?(選択)
    Mapには親がいないのではないでしょうか??祖先が違うと角を選ばれないでしょう?
    		System.out.println("[ 학번(studentNo) 목록 ]");
    		Set<String> keyList = studentList.keySet();  //Map->Set???
    		for (String studentNo : keyList) {
    			System.out.println(studentNo.toString());
    		}
    		
    		System.out.println("[ 학생 목록 ]");
    		Collection<Student> valueList = studentList.values();   
    		for (Student student : valueList) {
    			System.out.println(student.toString());
    		}

    HashTableクラス


    < HashMap < Map
    import java.util.Collection;
    import java.util.Hashtable;
    import java.util.Map;
    
    public class MapTest3 {
    	
    	public static void main(String[] args) {  // 업캐스팅 
    		Map<String, Student> studentList = new Hashtable<String, Student>();		
    		Student kim = new Student("STD-000001", "김둘리", 83, "컴퓨터 공학");
    		studentList.put("STD-000001", kim);
    		studentList.put("STD-000002", 
    		new Student("STD-000002", "박또치", 100, "컴퓨터 공학"));
    		studentList.put("STD-000003", 
    		new Student("STD-000003", "도우너", 75, "기계 공학"));
    		studentList.put("STD-000003", 
    		new Student("STD-000003", "고길동", 31, "국어 국문"));
    		
    		// STD-000001 데이터 삭제
    		studentList.remove("STD-000001");
    		
    		System.out.println("[ 학생 목록 ]");
    		Collection<Student> valueList = studentList.values();
    		for (Student student : valueList) {
    			System.out.println(student.toString());
    		}
    	}
    }