2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
haluamme puhuaSekvenssitaulukko, meidän on ensin puhuttava lineaarisista taulukoista, koska peräkkäiset taulukot ovat eräänlaisia lineaarisia taulukoita.
Kuten nimestä voi päätellä, lineaarinen taulukko on taulukko, joka järjestää tiedot kuten rivit.
Sen voi ymmärtää ajattelemalla jonotusta todellisuudessa.
Lineaaristen taulukoiden ominaisuudet:
Järjestystaulukko on kappaleFyysiset osoitteet ovat peräkkäisiäSäilytysyksiköt ovat kuin ihmisiä, jotka asettuvat vierekkäin.
Lineaarinen rakenne, joka tallentaa tietoelementit järjestyksessä, yleensä käyttäenjoukkovarastointi.
Suorita taulukon tietojen lisääminen, poistaminen, tarkistaminen ja muokkaaminen.
Toteuta itse sekvenssitaulukko (storage int type data), käytä sekvenssitaulukkoa luokkana, toteutamme joitain rajapintoja, eli joitainjäsenmenetelmäToteuttaa tietojen lisääminen, poistaminen, tarkistaminen ja muuttaminen.
public class SeqList {
private int[] elem;
private int usedSize;
// 默认构造方法
SeqList(){ }
// 将顺序表的底层容量设置为initcapacity
SeqList(int initcapacity){ }
// 新增元素,默认在数组最后新增
public void add(int data) { }
// 在 pos 位置新增元素
public void add(int pos, int data) { }
// 判定是否包含某个元素
public boolean contains(int toFind) { return true; }
// 查找某个元素对应的位置
public int indexOf(int toFind) { return -1; }
// 获取 pos 位置的元素
public int get(int pos) { return -1; }
// 给 pos 位置的元素设为 value
public void set(int pos, int value) { }
//删除第一次出现的关键字key
public void remove(int toRemove) { }
// 获取顺序表长度
public int size() { return 0; }
// 清空顺序表
public void clear() { }
}
Oletuksena avaamme aluksi 10 tietotilaa.
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
Anna taulukon pituus ja käytä taulukon pituutta tilan avaamiseen.
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
Uudet elementit lisätään oletuksena taulukon loppuun.
Huomioitavaa:
public void add(int data) {
if(isFull()){
elem = Arrays.copyOf(elem,elem.length * 2);
}
elem[usedSize++] = data;
}
/**
* 判断当前的顺序表是不是满的!
*
* @return true:满 false代表空
*/
private boolean isFull() {
return usedSize == elem.length;
}
Lisää elementti pos-alaindeksiin.
Varotoimenpiteet:
private boolean checkPosInAdd(int pos) throws PosIllegalException{
if(pos < 0 || pos > usedSize){
throw new PosIllegalException("位置不合法");
}
return true;
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
try{
if(checkPosInAdd(pos)){
if(isFull()){
elem = Arrays.copyOf(elem,elem.length * 2);
}
for (int i = usedSize; i > pos ; i--) {
elem[i] = elem[i-1];
}
elem[pos] = data;
usedSize++;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Katso, onko annetut tiedot sisällytetty järjestystaulukkoon.
Selaa sitä suoraan, palauta tosi, jos löydät sen, ja palauta false, jos et löydä.
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
Katso annettujen tietojen indeksiä tästä järjestystaulukosta.
Selaa suoraan läpi ja löydä paluuindeksi ilman -1:n palautusta.
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
Tulosta elementti positioon.
Varotoimenpiteet:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
Muokkaa pos position -elementtiä.
Varotoimenpiteet:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Poista avaimen ensimmäinen esiintymä.
Varotoimenpiteet:
public void remove(int key) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == key){
for (int j = i; j < usedSize - 1; j++) {
elem[j] = elem[j + 1];
}
usedSize--;
}
}
}
Sekvenssitaulukon pituuden saaminen viittaa tässä hyödyllisten tietojen määrään, eli usedSizeen.
public int size() {
return usedSize;
}
Aseta sekvenssitaulukon sisältö tyhjäksi.
Varotoimenpiteet:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
ArrayList-luokka tarjotaan Javassa edustamaan peräkkäistä luetteloa.
Käyttöliittymän kuvaus:
Java tarjoaa kolme rakennusmenetelmää taulukon mukaisesti:
menetelmä | Johdatus menetelmän käyttöön |
---|---|
ArrayList() | Väitteetön rakenne |
ArrayList(kokoelma<? extends E> c) | Luo ArrayList käyttämällä muita kokoelmia |
ArrayList(int alkuperäinen kapasiteetti) | Määritä sarjataulukon alkuperäinen kapasiteetti |
Tarjotut yleiset menetelmät ovat samanlaisia kuin yllä otetut.
Sekvenssitaulukoiden edut ovat seuraavat:
Alla linkit harjoituksiin:
Yang Huin kolmio