소 담 대열
배열 은 저장 과 접근 속도 가 가장 빠 른 데이터 구조 이지 만 생 성 시 길이, 저장 유형 이 고정 적 으로 제한 되 어 있 습 니 다.이 를 위해 우 리 는 동적 으로 데 이 터 를 저장 하 는 데이터 구조 인 대기 열 을 도입 합 니 다.대열 에 대해 말하자면 실제 생활 에는 식당 에서 요 리 를 하 는 학생, 슈퍼마켓 에서 계산 을 기다 리 는 고객, 극장 에서 줄 을 서서 표를 사 는 관객 들 이 적지 않다. 현실 생활 에 서 는 항상 줄 을 서 는 현상 이 존재 한다.우리 가 대기 열 을 컴퓨터 로 옮 기 고 JAVA 프로그램 으로 옮 길 때, 우 리 는 대기 열의 특성 을 찾 아야 한다.
줄 을 설 때마다 사람들 은 스스로 뒤에서 대열 에 들어간다. 물론 새치기 를 좋아 하지 않 고 다른 사람 이 싫어 하 는 시선 을 개의 치 않 는 사람들 도 있다.보통 가장 먼저 줄 을 서 는 사람 이 가장 먼저 업무 처 리 를 받 고 처리 가 끝나 면 대열 을 나 가 고 중간 에 일이 있어 서 팀 에서 물 러 나 는 인물 도 있다.이러한 특성 을 발견 하고 우 리 는 기본적으로 대열 의 몇 가지 일반적인 방법 을 명 확 히 했다.다음은 대열 의 배열 구현 코드 입 니 다.
import java.util.Arrays;
/**
* ,
* @author Daily
*
*/
public class MyQueque <E>{
//
private int size; //
private Object [] array; //
/**
* MyQueque ( )
*/
public MyQueque(){
}
/**
* MyQueque ( , )
* @param ob
*/
public MyQueque(E ob){
add(ob);
}
/**
*
* ( )
* @param ob
*/
public void add(E ob){
//
Object [] newarray = new Object[size+1];
// size-1
for (int i=0; i < size; i++){
newarray[i] = array[i];
}
newarray[size] = ob;
// size 1
size++;
//
array = newarray;
}
/**
* ( )
* @param index
* @param ob
*/
public boolean add(int index, E ob){
if (index > size){
return false;
}
//
Object [] newarray = new Object[size+1];
// size-1
for (int i=0; i < index; i++){
newarray[i] = array[i];
}
newarray[index] = ob;
for (int i=index+1; i<size+1; i++){
newarray[i] = array[i-1];
}
// size 1
size++;
//
array = newarray;
return true;
}
/**
* ( )
* @return
*/
public E delete(){
//
Object [] newarray = new Object[size-1];
// size-1
for (int i=1; i < size; i++){
newarray[i-1] = array[i];
}
Object copy = array[0];
// size 1
size--;
//
array = newarray;
//
return (E)copy;
}
/**
* ,
* @param index
* @return
*/
public E delete(int index){
if (index > size || index < 0){
return null;
}
//
Object [] newarray = new Object[size-1];
if (size-1>0){
// size-1
for (int i=0; i < size-index; i++){
newarray[i] = array[i];
}
for (int i=index+1; i<size; i++){
newarray[i-1] = array[i];
}
}
Object copy = array[index];
// size 1
size--;
//
array = newarray;
//
return (E)copy;
}
/**
* , (PS: Integer , )
* @param ob
* @return
*/
public boolean delete(E ob){
int count = 0;
boolean bl = false;
for (int i=0; i<size; i++){
if (array[i].equals(ob)){
count++;
bl = true;
}
}
//
Object [] newarray = new Object[size-count];
int u=0;
// size-1
for (int i=0; i < size; i++){
if (!array[i].equals(ob)){
newarray[u] = array[i];
u++;
}
}
// size count
size = size -count;
//
array = newarray;
//
return bl;
}
/**
*
* @param index
* @param ob
* @return
*/
public boolean modify(int index,E ob){
array[index] = ob;
return true;
}
/**
*
* @param index
* @return
*/
public E get(int index){
return (E)array[index];
}
/**
*
* @param index
* @return
*/
public int [] get(Object ob){
int count = 0;
for (int i=0; i<size; i++){
if (array[i].equals(ob)){
count++;
}
}
int [] flag = new int [count];
int u=0;
for (int i=0; i<size; i++){
if (array[i].equals(ob)){
flag[u] = i;
u++;
}
}
return flag;
}
/**
*
* @return
*/
public int getSize(){
return size;
}
/**
*
* @return
*/
public E [] getSort(){
Arrays.sort(array);
return (E[])array;
}
}
PS: 모든 유형 이 Object 형식의 하위 클래스 이기 때문에 요 소 를 넣 어 Object 형식의 대상 으로 정의 하여 배열 이 서로 다른 유형의 기능 을 저장 할 수 없 도록 합 니 다.대기 열 은 한 요 소 를 추가 하거나 삭제 할 때마다 해당 데 이 터 를 저장 하 는 배열 을 새로 만들어 데이터 의 동적 저장 을 실현 합 니 다.대기 열 에 있 는 모든 데 이 터 를 같은 유형 으로 규정 하기 위해 서 나 는 범 형 을 사용 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.