0708-JAVA関数インタフェース/集合フレームワーク
18188 ワード
0708-JAVA標準APIの関数インタフェース
andThen()とcompose()メソッド 関数インタフェースを有するデフォルトの方法 2つの関数インタフェースを順番に接続し、を実行します. 第1の戻り値は第2のパラメータとして、最終結果値 を返す.
andThen()とComponent()の違いは は、どの関数インタフェースから の処理を開始するかを区別する. andThen()はA->B を表すの組み合わせ()はB->A である.
リポジトリとフレームワークの違いは、制御フローの主導的な地位が誰/どこにあるかにある. は、アプリケーションのストリームを把握している人によって異なります. フレームワークは、ユーザーが必要なコードを記述できる独自のプロセス全体を有し、ライブラリは、ユーザーがプロセス全体を作成し、ライブラリにインポートおよび書き込みすることができる. 集合フレームワーク?-> コレクションライブラリで、オブジェクトの追加、削除、および取得を効率的に行う java.utilパッケージに含まれる [Collection] -> [List]/[Set]
上位抽象メソッド [Map]
インタフェース分類機能はクラスリストシリーズを実施し、O/重複記憶OrarrayList、LinkedList、Vectorsetシリーズを保持し、X/重複記憶XHashSet、TreeSetMapシリーズキーと値対記憶/キーは重複記憶XHashMap、HashTable、TreeMap、Properties
リストインデックス管理 を繰り返してオブジェクトを格納できます. ArrayList/Vector/LinkedList に追加された各要素には、順序(順序) があります.の値の繰り返しを許可します.(繰り返し可能) add()を使用して要素を追加 add(3,nice)-->インデックスの場所を直接指定できます remove()を使用して要素を削除 remove(2)-->インデックスの場所を指定し、 を削除 remove("nice")-->指定したオブジェクトと同じ要素を検索して削除する get(n)で要素値 を参照
ダイレクトfor文系リストのサイズを利用して、 を巡回します.
拡張for文(インデックス番号は必要ありません) List.forEach()の最終処理方法のループ(インデックス番号は不要)ram式を用いて,ArrayListの完全出力は であった.
シーケンス保証 は、 の繰り返しを許可する. ArrayListとVectorは、要素を中から入れ/取り出すと、プッシュ現象が発生します.(注) Vectorの内部実装は99%ArrayListと同じ 園区は を追加で実施し、マルチスレッド環境で要素オブジェクトを安全に操作できる.
したがって、実際の作業では、Thread-Safe Vectorオブジェクトがより多く使用される. LinkedList:要素を配列のように横に置くのではなく、ここ/そこに分散して格納するので、頻繁にオブジェクトを削除したり挿入したりする場所では、ArrayListよりも性能が良い. 1)したがってLinkedListにはインデックスという概念自体がない 2の代わりに、変更(追加/削除)が頻繁に発生する「押す/引く現象」自体はありません. Hashコード
最上位オブジェクトクラスから継承されるhashCodeメソッド.
オブジェクトの物理アドレスを論理アドレスに変換する値を16進数で表す->OID 数学では集合にたとえることができる. の格納順序(X)は保持されない. オブジェクト(X)を繰り返し保存できません. にはnullが1つしか格納されません. HashSet, LinkedHashSet, TreeSet Setオブジェクト を作成 setは、オブジェクト全体を巡回し、この反復器を使用して巡回するいわゆる「反復器」オブジェクトを提供します. 反復器(iterator)のhasNext()メソッドを使用して、優先的に巡回する要素があるかどうかを確認します.(true)の場合、反復器のnext()メソッドを使用してオブジェクトを取得できます.
Set/HashSetに格納されたオブジェクトが等しいか否かを判定するアルゴリズムが適用される.は、判断を繰り返すためのステップアルゴリズムである. 繰り返し判定のための2ステップアルゴリズム 等対象(繰返し判定)判定アルゴリズム
アドレスがLombokの@EqualsAndHashCodeアドレス
andThen() / compose()
andThen()
//데이터 소비자를 람다식으로 익명구현객체 생성.
Consumer<Member> consumerA = (m) -> { //void accept(T t);
log.info("consumerA : " + m.getName() );
};
// 데이터 소비자를 람다식으로 익명구현객체 생성
Consumer<Member> consumerB = (m) -> { //void accept(T t);
log.info("consumerB : " + m.getId());
};
// 위의 2개의 데이터 소비 로직을 하나의 파이프라인(Pipeline)으로 구성
Consumer<Member> pipline = consumerA.andThen(consumerB);
pipline.accept(new Member("홍길동", "hong"));
フレームとライブラリの違い
集合フレームワーク-第15章ppt
集合フレームワークの主なインタフェース
上位抽象メソッド
集合フレームワークの主なインタフェース分類
インタフェース分類機能はクラスリストシリーズを実施し、O/重複記憶OrarrayList、LinkedList、Vectorsetシリーズを保持し、X/重複記憶XHashSet、TreeSetMapシリーズキーと値対記憶/キーは重複記憶XHashMap、HashTable、TreeMap、Properties
- List
ArrayList
リスト内のすべての要素を巡回します。
for(int i=0; i<list.size(); i++) { // 전체 리스트의 요소 순회
String str = list.get(i); // 해당 인덱스 번호의 구슬(객체) 얻기
log.info(str);
}// classical for
for(String s : list) {
log.info(s);
}//enhanced for
//void accept(T t); T -> String //타겟타입의 시그니처 메소드 확인
list.forEach( t -> log.info(t) ); // 람다식으로 구현 해서 요소 출력
list.forEach(log::info); // 메소드참조를 이용하여 요소 순회
Arrays helperクラスのasListメソッドを使用する場合、新しい演算子を使用してオブジェクトを作成する必要がなく、要素の値を使用できます.List<String> list1 = Arrays.<String>asList("홍길동", "신용권", "김자바");
List<Integer> list2 = Arrays.<Integer>asList(1, 2, 3);
Vector
したがって、実際の作業では、Thread-Safe Vectorオブジェクトがより多く使用される.
//--1. Thread-safe한 ArrayList 객체 생성
List<Board> list = new Vector<Board>();
LinkedList
List<String> list2 = new LinkedList<>(); //타입추론
最上位オブジェクトクラスから継承されるhashCodeメソッド.
オブジェクトの物理アドレスを論理アドレスに変換する値を16進数で表す->OID
Set
//Set 객체 생성
Set<Member> set = new HashSet<>();
//Iterator(반복자) 객체반환
Iterator<Member> iterator = set.iterator();
while(iterator.hasNext()) {
Member element = iterator.next();
log.info("\t" + element);
}//while
コレクションのプロパティのため、同じオブジェクト(ピアオブジェクト)を繰り返すことはできません.Set/HashSetに格納されたオブジェクトが等しいか否かを判定するアルゴリズムが適用される.
@Override
public int hashCode() {
log.debug("hashCode() invoked.");
// 회원의 이름의 해쉬값과 나이를 더한 값으로 회원간의 구분값으로 하자!
return name.hashCode() + age;
}//hashCode
@Override
public boolean equals(Object obj) {
log.debug("equals(obj) invoked.");
//매개변수로 받은 객체가 같은 회원객체라면
if(obj instanceof Member) { // 회원객체라면
Member member = (Member) obj; // 강제형변환(다형성-1)
//현재 회원과 매개변수로 넘어온 회원간의 비교 기준을,
//기존 회원의 이름과 나이, 비교 회원의 이름과 나이가 모두 같으면 같은 회원의 판단.
return member.name.equals(name) && (member.age == age);
} else {
return false; //같은 회원객체가
}//if-else
}//equals
アドレスがLombokの@EqualsAndHashCodeアドレス
Reference
この問題について(0708-JAVA関数インタフェース/集合フレームワーク), 我々は、より多くの情報をここで見つけました https://velog.io/@jsung12/0709-JAVA-함수적-인터페이스-컬렉션-프레임워크テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol