集合相関データ構造とアルゴリズム
6785 ワード
キュー CollectionとCollectionの違い?Collectionは集合の親インターフェースであり、Collectionは集合の道具類である. Collectionクラスの集合のためのツールクラスは、集合動作のいくつかの方法を提供する.sort():この方法は集合中の元素を自然に並べ替えることができます. Comprator比較器は、インターフェースのクラスを実現するための抽象的な方法int compreto(E o 1,E o 2)を実現するためのインターフェースである. この方法は0より大きい値を返します.o 1はo 2より大きいです. この方法の戻り値は0以下である.o 1はo 2より小さい. この方法の戻り値は0:o 1対o 2等しい. コンパレータは、セット内の要素を比較するために使用される.Collectionは、ソートの積載方法を提供し、一つのコンパレータが入ってきて、集合を比較することをサポートする.
import java.util.LinkedList;
import java.util.Queue;
/**
* :
* Queue :java.util.Queue
* offer:
* poll: , offer
* ,
* peek: 。( !)
*
* LinkedList
*/
public class QueueTest {
public static void main(String[] args) {
/**
* LinkedList , !
* , ,
*
*/
Queue queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");
queue.offer("C");
System.out.println(queue);//[A, B, C]
// ,
System.out.println(" :"+queue.peek());// :A
String element = null;
/*
* poll() , null
*
* */
while ((element=queue.poll())!=null){
System.out.println(element);
}
/**
* (FIFO)
* , 。
*/
}
}
スタックデータ構造import java.util.Deque;
import java.util.LinkedList;
/**
*
* Deque:
* pust: ,
* pop: ,
* peek: ,
* (FILO)
*
*
* LinkedList Deque 。
*/
public class DequeTest {
public static void main(String[] args) {
/**
*
*/
Deque deque = new LinkedList();
for (int i = 0; i < 5; i++) {
deque.push((char) ('A'+i));
}
System.out.println(deque);//[E, D, C, B, A]
/*
* :
* pop , peek
* , null
* ” “。 ,
* pop “NoSuchElementException”
*/
// peek
while (deque.peek()!=null){
System.out.println(deque.pop()+"");
}
}
}
比較アルゴリズム/**
*
* ,
* Comparable ,
*/
public class ComparableTest implements Comparable {
/* */
private int x;
private int y;
public ComparableTest(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
/**
* , Comparable
*
* @param point ,
* @return
* 0:
* 0:
* 0:
* :
* ,
*/
@Override
public int compareTo(ComparableTest point) {
//
int r = x*x+y*y;
//
int other = point.x*point.x+point.y*point.y;
/*
* :
* equals true ,
* compareTo 0,
* 。
*/
return r-other;
}
@Override
public String toString() {
return "ComparableTest{" +
"x=" + x +
", y=" + y +
'}';
}
}
コレクションimport java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* Comparable !
*/
public class CollectionsTest {
public static void main(String[] args) {
List list = new ArrayList();
// 3
list.add(new ComparableTest(1,5));
list.add(new ComparableTest(3,4));
list.add(new ComparableTest(2,2));
System.out.println(list);//[ComparableTest{x=1, y=5}, ComparableTest{x=3, y=4}, ComparableTest{x=2, y=2}]
/**
*
* compareTo
*
*/
Collections.sort(list);
System.out.println(list);//[ComparableTest{x=2, y=2}, ComparableTest{x=3, y=4}, ComparableTest{x=1, y=5}]
/**
* ,
* : x 。
*
* :
* 1、 Comparator
* 2、 compareTo(E o1,E o2)
* 3、
* 4、 Collections
* sort(Collection c,Comparator comparator)
*
*/
//
Collections.sort(list, new Comparator() {
/**
* : x
* @param o1
* @param o2
* @return 0:o1>o2, 0:o1
コンパレータの練習をカスタマイズimport java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
*/
public class ComparatorTest {
public static void main(String[] args) {
/**
*
* :“Tom”,“Jerry”,“Boss”,“Killer”,“ATom”,“Clark”
*
* :
*/
List list = new ArrayList();
list.add("Tom");
list.add("Jerry");
list.add("Boss");
list.add("Killer");
list.add("ATom");
list.add("Clark");
System.out.println(list);//[Tom, Jerry, Boss, Killer, ATom, Clark]
/**
* String
*/
Collections.sort(list);
System.out.println(list);//[ATom, Boss, Clark, Jerry, Killer, Tom]
Collections.sort(list, new Comparator() {
/**
*
* @param o1
* @param o2
* @return
*/
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});
System.out.println(list);//[Tom, ATom, Boss, Clark, Jerry, Killer]
}
}