Java 10日目
9日目、10日目は、キャスト集合フレームワークがよく使われるクラスなので覚えておきましょう.
すべてのオブジェクトに1回繰り返しインポートするリピータ(Ivarator)を提供します.反復器とは、Identratorインタフェースが実装されたオブジェクトを指し、iterator()メソッドを呼び出すことで得ることができる. リストセットは格納順序を保持し、Setセットは格納順序を保持しない. オブジェクトを繰り返し保存することはできません.Nullは1つしか保存できません.(集合は無順序であるため重複は許されない) のソートは行われません. ハッシュ符号()を使用して、格納対象のハッシュ符号値 を比較する equals()は、2つのオブジェクトを比較し、trueの場合、同じオブジェクトとみなす .
HashSet<タイプ>参照変数=new HashSet() add():要素を追加 size():戻り要素数 remove():オブジェクト を削除 Setは、インデックス検索によってオブジェクトをインポートする方法がないため、オブジェクト全体に対して1回繰り返しインポートするリピータを提供する. 歪みからオブジェクトをインポートする場合はnext()メソッドを使用します.next()メソッドを使用する前に、インポートするオブジェクトが接続されているかどうかを確認したほうがいいです.hasNext()メソッドはtrue(インポートするオブジェクトがある場合)を返し、false(インポートするオブジェクトがない場合)を返します.
昇順に並ぶ バイナリナビゲーションツリー構造、 バイナリナビゲーションツリーの追加と削除には時間がかかりますが、よりパフォーマンスの高いデータ構造のソートと取得
TreeSet treeSet = new TreeSet(); first():最小値 を返します. last():最大値 を返します. add():要素を追加 remove():パラメータとして渡された値 を削除します. size():戻り要素数 pollFirst():最も低いオブジェクトを取り出し、セットから を削除します. poll Last():最も高いオブジェクトを取り出し、セットから を削除します.()未満:パラメータ伝達値より小さいデータの最大値 を返す.より高い():パラメータ伝達値より大きいデータの最小値 を返す.
Map map = new HashMap; Mapインタフェースを有する典型的なクラス キーと値からなる要素オブジェクト構造を記憶する資料構造 を有する.鍵は繰り返し記憶することができず、値は を繰り返すことができる.
値を既存の鍵と同じ鍵として保存すると、既存の値が失われ、が新しい値に置き換えられます.ハッシュが使用されているため、大量のデータを取得する際に優れたパフォーマンスを発揮します.
基本例 put():保存要素(キー、値) get():キーによって値 を返す鍵セット():鍵を返すすべてのセット entrySet():鍵と値を返すすべてのセット 置換():置換
TreeMap treeMap = new TreeMap();バイナリツリーベースのMapクラス キーと値を格納するMapとEntry, キーの昇順で を並べます.
性能は HashMap より低い
Map map = new Hashtable;
JavaはHashMapをサポートするため、HashTableを実装または使用することは少ない.
テーブルにキーと値を格納するデータ
HashMapとHashTableの違いは?
同期メソッドからなるため、マルチスレッドはこれらのメソッドを同時に実行できません.他のスレッドを実行できるのは、1つのスレッドのみです.
HashTableは を継承する実施する. HashTableはオブジェクトとして鍵と値を格納、属性はStringとして を格納する.アプリケーションのプリファレンスパラメータに関連する属性を格納するために使用されます.
概念を見て理解したときは理解したと思いますが、最後の2つの練習問題は自分で解こうとしても解けませんでした.このようにコードを見たときは思ったより簡単なコードでしたが、考えが難しすぎて無理だったようです
Set Interfaceベース
すべてのオブジェクトに1回繰り返しインポートするリピータ(Ivarator)を提供します.
1.HashSetクラス
重複処理の排除
使用方法
HashSet<タイプ>参照変数=new HashSet()
import java.util.HashSet;
import java.util.Iterator;
public class HashSet1 {
public static void main(String[] args) {
HashSet<String> hashSet1 = new HashSet<>();
HashSet<String> hashSet2 = new HashSet<>();
hashSet1.add("김사과");
hashSet1.add("반하나");
hashSet1.add("오렌지"); // 데이터의 순서를 정해주지 않는다.
System.out.println(hashSet1);
hashSet1.add("김사과"); // 같은 데이터가 못들어간다.
System.out.println(hashSet1);
for(String s : hashSet1){
System.out.print(s + " ");
}
System.out.println("요소의 개수 : " + hashSet1.size());
hashSet2.add("김사과");
hashSet2.add("반하나");
hashSet2.add("배애리");
System.out.println(hashSet2);
Iterator<String> iterator = hashSet2.iterator();
while(iterator.hasNext()){ // hasNext() 메소드는 가져올 객체가 있으면 true를 리턴하고 더 이상 가져올 객체가 없으면 false를 리턴
System.out.print(iterator.next() + " ");
}
}
}
リピーター2.TreeSetクラス
使用方法
TreeSet treeSet = new TreeSet();
Mapインタフェース
1.HashMapクラス
Map
値を既存の鍵と同じ鍵として保存すると、既存の値が失われ、が新しい値に置き換えられます.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMap1 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("apple", "김사과");
hashMap.put("banana", "반하나");
hashMap.put("orange", "오렌지");
hashMap.put("melon", "이메론");
hashMap.put("berry", "배애리");
System.out.println(hashMap); // {banana=반하나, orange=오렌지, apple=김사과, berry=배애리, melon=이메론}
System.out.println(hashMap.get("orange"));
System.out.println(hashMap.keySet()); // 키 값만 출력
System.out.println(hashMap.entrySet()); // 모든 데이터 출력
for(String k : hashMap.keySet()){
System.out.println("[key] : " + k + ", [value] : " + hashMap.get(k));
}
System.out.println();
for(Map.Entry<String, String> entry : hashMap.entrySet()){
System.out.println("[key] : " + entry.getKey() + ", [value] : " + entry.getValue());
}
hashMap.remove("melon"); // 제거
System.out.println(hashMap);
hashMap.replace("berry", "배리"); // 변경
Iterator<String> keys = hashMap.keySet().iterator();
while(keys.hasNext()){
String key = keys.next();
System.out.println("[key] : " + key + ", [value] : " + hashMap.get(key));
}
}
}
TreeMapクラス
TreeMap
性能は
HashTableクラス
Map
JavaはHashMapをサポートするため、HashTableを実装または使用することは少ない.
テーブルにキーと値を格納するデータ
HashMapとHashTableの違いは?
同期メソッドからなるため、マルチスレッドはこれらのメソッドを同時に実行できません.他のスレッドを実行できるのは、1つのスレッドのみです.
属性クラス
練習問題
/*
백준 2920번 음계
*/
import java.util.Scanner;
public class Sort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] data = new int[8];
boolean ascending = true;
boolean descending = true;
for(int i = 0; i < data.length; i++){
data[i] = sc.nextInt();
}
for(int i = 1; i< data.length; i++){
if(data[i] > data[i-1]) descending = false;
if(data[i] < data[i-1]) ascending = false;
}
if(ascending) System.out.println("ascending");
else if(descending) System.out.println("descending");
else System.out.println("mixed");
}
}
練習問題import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
/*
백준 1874번 스택 수열
*/
public class Main3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> s = new Stack();
ArrayList<Character> result = new ArrayList<>();
int num = sc.nextInt();
int cnt = 1;
for(int i=0; i < num; i++){
int x = sc.nextInt();
while(cnt <= x){
s.push(cnt);
cnt += 1;
result.add('+');
}
if(s.peek() == x){
s.pop();
result.add('-');
} else {
System.out.println("NO");
return;
}
}
for(int i =0; i<result.size(); i++){
System.out.println(result.get(i));
}
}
}
学識
概念を見て理解したときは理解したと思いますが、最後の2つの練習問題は自分で解こうとしても解けませんでした.このようにコードを見たときは思ったより簡単なコードでしたが、考えが難しすぎて無理だったようです
Reference
この問題について(Java 10日目), 我々は、より多くの情報をここで見つけました https://velog.io/@soyounjeong/Java-10일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol