CodeGym /Java Blogu /Rastgele /Java Listesi
John Squirrels
Seviye
San Francisco

Java Listesi

grupta yayınlandı
Java Collection Framework, veri yapılarıyla çalışmak için bunları uygulayan çok kullanışlı arabirimler ve sınıflar içerir. Bunun en önemli JDK çerçevelerinden biri olduğu söylenebilir. Liste arayüzü çok popülerdir. çünkü programlamada her türlü liste olmadan vazgeçilmezdir. Bu yazımızda bu arayüzü, Java List metotlarını ve uygulamalarını ele alacağız.

Java Listesi Arayüzü

Bir listeyle ilgili en önemli şey, sıralı bir koleksiyon olmasıdır . Buna bir dizi de diyebilirsiniz. Java'da listeler homojendir, yani listenin öğeleri aynı veri türündedir. Java List arabirimi Koleksiyondan devralır, tüm işlemlerini devralır. Listede bunlara ek olarak aşağıdaki işlemler de mümkündür:
  • Konumsal erişim. Her öğenin bir dizini vardır ve konumlarına göre değiştirilebilir. listede. Yani, öğeleri ekleyebilir, hariç tutabilir ve değiştirebilirsiniz.
  • Aramak. Bir listedeki bir öğeyi içeriğine göre bulabilir ve dizinini döndürebilirsiniz.
  • Yineleme. List'in sıralı yapısı, yineleme yöntemlerinin (listIterator) kullanımına izin verir.
  • Menzil görünümü. Alt liste yöntemi, listede rasgele aralık işlemleri gerçekleştirir.

Java Listesi Yöntemleri

Yukarıdaki işlemler, Java Listesi arabiriminin yöntemlerinde gösterilir. İşte onlardan bazıları:
Yöntem Tanım
ekle(E öğesi) Bu yöntem, eleman öğesini bu listenin sonuna ekler .
ekle(int dizini, eleman) Yöntem, listedeki belirli bir dizine bir öğe ekler. Gerekli bir parametre iletilirse, elemanı listenin sonuna ekler.
addAll(int dizini, Koleksiyon koleksiyonu) Verilen koleksiyondaki tüm öğeleri listeye ekler. Tek bir parametre iletilirse, verilen koleksiyonun tüm öğelerini listenin sonuna ekler.
boyut() Listenin boyutunu (listedeki öğe sayısı) döndürür.
al(int dizini) Belirtilen dizindeki öğeyi döndürür.
set(int dizini, eleman) Belirli bir dizindeki öğeleri yeni öğeyle değiştirir ve yeni bir öğeyle değiştirilen öğeyi döndürür.
kaldır(int dizini) Belirtilen dizinden bir öğeyi kaldırır.
kaldır(öğe) Verilen öğenin listedeki ilk örneğini kaldırır.
temizlemek() Listedeki tüm öğeleri kaldırır.
indexOf(element) Verilen öğenin ilk geçtiği yeri döndürür. Öğe listede yoksa, -1 değerini döndürür .
lastIndexOf(öğe) Verilen öğenin son oluşumunu döndürür. Öğe listede yoksa, -1 değerini döndürür .
eşittir(öğe) Verilen elemanın eşitliğini listedeki elemanlarla karşılaştırın.
hash kodu() Verilen listenin hashcode değerini döndürün.
boş() Listenin boş olup olmadığını kontrol eder. Liste boşsa true döndürür.
içerir(öğe) Listenin öğesini içerip içermediğini kontrol eder . Liste öğeyi içeriyorsa true değerini döndürür.
includeAll(Koleksiyon koleksiyonu) Listenin tüm öğe koleksiyonunu içerip içermediğini kontrol eder.
sıralama(Karşılaştırıcı karşılaştırması) Verilen karşılaştırıcıya göre listenin öğelerini sıralar.
alt Liste(int fromIndex, int toIndex) Bu listenin belirtilen fromIndex (dahil) ve toIndex (exclusive) arasındaki bölümünün bir görünümünü döndürür.

Liste uygulaması

List bir arayüz olduğundan, programların somut bir uygulama oluşturması gerekir. Java Koleksiyonları API'sinde aşağıdaki Liste uygulamaları arasından seçim yapabilirsiniz:
  • java.util.ArrayList
  • java.util.LinkedList
  • Java.util.Vector
  • java.util.Yığın
List arabiriminin en popüler uygulaması ArrayList olarak adlandırılır. Çok daha az sıklıkta, ancak yine de LinkedList'in gerçek görevlerde kullanıldığını görebilirsiniz, ancak Vector ve Stack uzun süredir ahlaki açıdan modası geçmiş durumda, bu nedenle onları büyük olasılıkla yalnızca eski eski koda sahip projelerde bulacaksınız.

Arayüz Bildirimini Listele

Java programında bir Listeyi aşağıdaki yollardan biriyle ilan edebilirsiniz:

List<String> myList = new ArrayList();
List myList1 = new ArrayList();
List myList3 = new ArrayList<String>();
ArrayList arrayList = new ArrayList();
Bir arayüz aracılığıyla yeni bir liste bildirmek en iyisidir. Benzer şekilde, List'in diğer uygulamalarını da bildirebilirsiniz. En kısa yol:

Vector myVector = new Vector;
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
Böyle bir bildirimle, bu tür listelerin öğelerinin veri türü, listenin başlatılması sırasında, yani buraya öğeler eklendiğinde belirlenir.

List myList = new ArrayList<String>();
Vector myVector = new Vector();
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
stack.add("Paul");
linkedList.add(1);
myVector.add(1.2f);
myList.add('a');
Artık yığınımıza yalnızca dizeler eklenebilir, tamsayılar linksList'e , yüzer myVector'a ve myList bir karakter listesidir.

ArrayList nasıl çalışır?

Düzenli dizilere zaten aşinaysanız, ArrayList'e de biraz aşinasınız demektir. Aslında, ArrayList dinamik bir dizidir ve içinde sıradan bir dizi vardır. Bu dizi bir veri deposu görevi görür. ArrayList yalnızca referans türlerini, üçüncü taraf sınıflar, dizeler, çıktı akışları ve diğer koleksiyonlar dahil tüm nesneleri depolar. Sarmalayıcı sınıflar, ArrayList'te ilkel veri türlerini depolamak için kullanılır. Bir liste oluştururken boyutunu hemen belirleyebiliriz, ancak çoğu durumda bunu yapmayız. Varsayılan olarak, ArrayList size = 10. Bir ArrayList'e yeni bir öğe eklemek neye benzer? Öncelikle dahili dizide yeterli alan olup olmadığı ve bir elemanın daha sığıp sığmayacağı kontrol edilmeye başlanır. Boşluk varsa yeni eleman listenin sonuna yani son elemandan sonraki hücreye eklenir. Dizini, arraylist.size() olacaktır. Listemizi yeni oluşturduysak ve boşsa bu arrayList.size() = 0 demektir. Buna göre indeksi 0 olan hücreye yeni bir eleman eklenecektir. dizi, ArrayList'in içinde (OldArray'in boyutu * 1.5) + 1 boyutunda oluşturulur. Aynı prensipte, listenin ortasına bir ekleme gerçekleşir, ancak aynı zamanda eklenen öğeyi izleyen tüm öğeler sağa kaydırıldı. Yani dizide 5 eleman varsa ve 2 numaralı hücreye (yani üçüncü hücreye) bir eleman eklememiz gerekiyorsa, o zaman 0 ve 1 dizi elemanı yerinde kalır, 2. hücrede yeni bir eleman görünür ve selefi üçüncü hücreye gider vb. indeksi 0 olan hücreye yeni bir eleman eklenecektir. Eğer yeterli alan olmadığı anlaşılırsa ArrayList içerisinde (OldArray * 1.5 boyutunda) + 1 boyutunda yeni bir dizi oluşturulur. ilke olarak, listenin ortasında bir ekleme gerçekleşir, ancak aynı zamanda eklenen öğeyi takip eden tüm öğeler sağa kaydırılır. Yani dizide 5 eleman varsa ve 2 numaralı hücreye (yani üçüncü hücreye) bir eleman eklememiz gerekiyorsa, o zaman 0 ve 1 dizi elemanı yerinde kalır, 2. hücrede yeni bir eleman görünür ve selefi üçüncü hücreye gider vb. indeksi 0 olan hücreye yeni bir eleman eklenecektir. Eğer yeterli alan olmadığı anlaşılırsa ArrayList içerisinde (OldArray * 1.5 boyutunda) + 1 boyutunda yeni bir dizi oluşturulur. ilke olarak, listenin ortasında bir ekleme gerçekleşir, ancak aynı zamanda eklenen öğeyi takip eden tüm öğeler sağa kaydırılır. Yani dizide 5 eleman varsa ve 2 numaralı hücreye (yani üçüncü hücreye) bir eleman eklememiz gerekiyorsa, o zaman 0 ve 1 dizi elemanı yerinde kalır, 2. hücrede yeni bir eleman görünür ve selefi üçüncü hücreye gider vb. listenin ortasında bir ekleme gerçekleşir, ancak aynı zamanda eklenen öğeyi takip eden tüm öğeler sağa kaydırılır. Yani dizide 5 eleman varsa ve 2 numaralı hücreye (yani üçüncü hücreye) bir eleman eklememiz gerekiyorsa, o zaman 0 ve 1 dizi elemanı yerinde kalır, 2. hücrede yeni bir eleman görünür ve selefi üçüncü hücreye gider vb. listenin ortasında bir ekleme gerçekleşir, ancak aynı zamanda eklenen öğeyi takip eden tüm öğeler sağa kaydırılır. Yani dizide 5 eleman varsa ve 2 numaralı hücreye (yani üçüncü hücreye) bir eleman eklememiz gerekiyorsa, o zaman 0 ve 1 dizi elemanı yerinde kalır, 2. hücrede yeni bir eleman görünür ve selefi üçüncü hücreye gider vb.

Java Listesi Örneği (Arraylist gerçekleştirme)


import java.util.*;

public class ArrayListExample2 {
   public static void main(String[] args) {
       List<String> myFriendsList = new ArrayList();
       //we created list of some objects 
       System.out.println( "the size of myList before init = " + myFriendsList.size());
       myFriendsList.add("Alex");
       myFriendsList.add("Tanya");
       myFriendsList.add("Veloxy");
       myFriendsList.add("Alex");
       myFriendsList.add("Andrew");
       System.out.println(myFriendsList);
       System.out.println( "the size of myList after init = " + myFriendsList.size());

       myFriendsList.add("Ihor");
       System.out.println(myFriendsList);
       System.out.println("the size of my list = " +  myFriendsList.size());


       //here the program will print out the first appearance of "Alex" element
       System.out.println(myFriendsList.indexOf("Alex"));
       //program will print out the first appearance of "Alex" element starting from the element 0

       myFriendsList.remove(3);
       System.out.println(myFriendsList.get(3));
       System.out.println("after removing one of Alex's there is only one Alex: " + myFriendsList);
       System.out.println(myFriendsList.get(1));



       myFriendsList.clear();
       System.out.println("the size of the vector after clear method = " +  myFriendsList.size());

   }
}
İşte bu programın çıktısı:
init'ten önceki myList boyutu = 0 [Alex, Tanya, Veloxy, Alex, Andrew] init'ten sonraki myList boyutu = 5 [Alex, Tanya, Veloxy, Alex, Andrew, Ihor] listemin boyutu = 6 0 Andrew sonra Alex'in birini kaldırarak sadece bir Alex var: [Alex, Tanya, Veloxy, Andrew, Ihor] Tanya'nın vektör boyutunu temizle yöntemi = 0 İşlem çıkış kodu 0 ile tamamlandı

LinkedList nasıl çalışır?

Bir LinkedList'te, öğeler aslında aynı zincirdeki bağlantılardır. Her öğe, depoladığı verilere ek olarak, önceki ve sonraki öğeye bir bağlantıya sahiptir. Bu bağlantılar, bir öğeden diğerine gezinmenizi sağlar. Yineleyici, her iki yönde de geçişi destekler. Bir listenin başına, ortasına ve sonuna alma, çıkarma ve ekleme yöntemlerini uygular. Null dahil olmak üzere herhangi bir öğe eklemenizi sağlar. LinkedList iki arabirim uygular — yalnızca List değil, aynı zamanda Deque. Bu, boş bile olsa herhangi bir öğeden çift yönlü bir sıra oluşturma yeteneği sağlar. Bağlantılı listeye yerleştirilen her nesne bir düğümdür (düğüm). Her düğüm bir öğe, önceki ve sonraki düğüme bir bağlantı içerir. Aslında, bağlantılı liste, her biri oluşturulduğunda tanımlanan türde bir nesneyi depolamak için tasarlanmış bir dizi düğümden oluşur.

Kod Örneği


import java.util.*;
public class LinkedListTest {

       public static void main(String args[]){

           List myLinkedList= new LinkedList<Integer>();
           myLinkedList.add(1);
           myLinkedList.add(2);
           myLinkedList.add(4);
           System.out.println("three added elements: " + myLinkedList);
           myLinkedList.add(5);
           myLinkedList.remove(1);
           System.out.println(myLinkedList);
           myLinkedList.size(); //3
           
           //add new element at the specified position:
           myLinkedList.add(2,7);
           System.out.println(myLinkedList);
                }
       }
Çıktı burada:
eklenen üç öğe: [1, 2, 4] [1, 4, 5] [1, 4, 7, 5]

Vektör Kodu Örneği

Vector ayrıca dinamik bir dizi gerçekleştirmesidir ve ArrayList'e çok benzer, ancak senkronize edilmiştir ve koleksiyon çerçevesinin içermediği bazı eski yöntemlere sahiptir. İşte bu sınıf kullanımına basit bir örnek.

import java.util.Vector;

public class VectorExample1 {

   public static void main(String[] args) {
       Vector vector = new Vector();
       System.out.println("the size of the empty vector = " +  vector.size());
       vector.add("Alex");
       vector.add("Tanya");
       vector.add("Andrew");
       System.out.println(vector);
       vector.add("Alex");
       vector.add("Ihor");
       System.out.println(vector);
       System.out.println("the size of the vector = " +  vector.size());
       System.out.println("the first element of the vector = " + vector.firstElement());

       //here the program will print out the first appearance of "Johnny" element
       System.out.println(vector.indexOf("Andrew"));
       //program will print out the first appearance of "Johnny" element starting from the element 1
       System.out.println(vector.indexOf("Alex", 1));
       System.out.println(vector);
       vector.clear();
       System.out.println("the size of the vector after clear method = " +  vector.size());

   }
}
Çıktı:
boş vektörün boyutu = 0 [Alex, Tanya, Andrew] [Alex, Tanya, Andrew, Alex, Ihor] vektörün boyutu = 5 vektörün ilk elemanı = Alex 2 3 [Alex, Tanya, Andrew, Alex, Ihor] clear yönteminden sonraki vektörün boyutu = 0 İşlem çıkış kodu 0 ile tamamlandı

Java Stack sınıf kodu Örneği


import java.util.Stack;

public class StackTest {
   public static void main(String[] args) {
       Stack stack = new Stack();
       System.out.println(stack.isEmpty());
       stack.add("Paul");
       stack.add("Johnny");
       stack.add("Alex");
       System.out.println(stack.isEmpty());
       stack.push("Andrew");
       System.out.println(stack);
       stack.pop();
       System.out.println(stack);
   }
}
Yığın yalnızca add() ve remove() yöntemlerine değil, aynı zamanda push ve pop'a da sahiptir, bunlar bu tür veri yapıları için klasiktir. Yığın "ilk giren, son çıkar" kuralına uyar - bu tam bir anti-kuyruktur. Bu nedenle, pop işlemi, yığına en son yerleştirilen öğeyi açar. İşte örneğimizin çıktısı:
doğru yanlış [Paul, Johnny, Alex, Andrew] [Paul, Johnny, Alex]
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION