# List

Bu bölümde **List** veri tipini detaylıca inceleyeceğiz.

**List**, liste oluşturmamızı sağlayan bir veri tipidir. `List` terimi ile kullanılır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
```

## Index Nedir?

`Index`, **List** içindeki elemanların sıra numarasıdır. **Index** sırası 0'dan başlar. Yukarıdaki örneğe göre:

```dart
print(isimler[1]); //Erkay
```

## List Uzunluğu

`List` uzunluğunu `length` fonksiyonu (getter) iliştirilerek öğrenilebilir.

```dart
print(isimler.lenght); //4
```

## List Ters Çevirme

```dart
print(isimler.reversed); //(Emir, Altan, Erkay, Kaan)
```

## First ve Last

```dart
print(isimler.firt); //ilk indexi verir.
print(isimler.last); //son indexi verir.
```

## isEmpty ve isNotEmpty

`isEmpty` boşsa `true`, `isNotEmpty` boş değilse `true` döndürür.

```dart
print(isimler.isEmpty); //false
print(isimler.isNotEmpty); //true
```

## runtimeType

`List`'in veri tipini verir. Veri tipi belirlenmemişse `dynamic`'tir.

```dart
print(isimler.runtimeType); //List<dynamic>
```

## add

`List`'e eleman ekler.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.add("Ahmet");
print(isimler); //[Kaan, Erkay, Altan, Emir, Ahmet]
```

## addAll

Başka bir `List`'teki elemanları ekler.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
List yeniIsimler = ["Ahmet", "Mehmet", "Ali"];
isimler.addAll(yeniIsimler);
print(isimler);
//[Kaan, Erkay, Altan, Emir, Ahmet, Mehmet, Ali]
```

## asMap

`Map`'e dönüştürür.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
print(isimler.asMap());
//{0: Kaan, 1: Erkay, 2: Altan, 3: Emir}
```

## clear

`List` içeriğini temizler.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.clear();
print(isimler); // []
```

## fillRange

Belirlediğimiz index aralığını `null` ile doldurur. **Null** belirlenmemiş veri tipidir. Yani boştur.

```dart
 List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
 isimler.fillRange(1, 3);
 print(isimler); //[Kaan, null, null, Emir]
```

## getRange

Belirlediğimiz aralığı verir.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
print(isimler.getRange(1, 3)); // (Erkay, Altan)
```

## indexOf

Yazılan nesnenin indexini verir.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
print(isimler.indexOf("Altan")); // 2
```

## insert

Belirlenen indexe eleman ekleme.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
print(isimler); // [Kaan, Erkay, Altan, Emir]
isimler.insert(2, "Ali");
print(isimler); // [Kaan, Erkay, Ali, Altan, Emir]
```

## insertAll

Belirlenen indexe `List` ekleme.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
List isimlerYeni = ["Ali", "Mehmet", "Ahmet"];
print(isimler); // [Kaan, Erkay, Altan, Emir]
isimler.insertAll(2, isimlerYeni);
print(isimler);
// [Kaan, Erkay, Ali, Mehmet, Ahmet, Altan, Emir]
```

## lastIndexOf

Aramaya sondan başlayarak yazılan elemanın indexini verir.

```dart
List isimler = ["Kaan", "Erkay", "Kaan", "Emir"];
print(isimler.lastIndexOf("Kaan")); // 2
```

## remove

Yazılan elemanı kaldırır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
  isimler.remove("Altan");
  print(isimler); // [Kaan, Erkay, Emir]
```

## removeAt

Belirtilen indexteki elemanı kaldırır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.removeAt(1);
print(isimler); // [Kaan, Altan, Emir]
```

## removeLast

`List`'in son elemanını kaldırır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.removeLast();
print(isimler); // [Kaan, Erkay, Altan]
```

## removeRange

Belirlenen aralığı kaldırır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.removeRange(1, 3);
print(isimler); // [Kaan, Emir]
```

## replaceRange

Belirtilen aralığı değiştirir.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.replaceRange(1, 3, ["Ahmet", "Merhmet"]);
print(isimler); // [Kaan, Ahmet, Merhmet, Emir]
```

## setAll

Belirtilen indexten itibaren belirtilen `List` elemanlarının atanması.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
List isimlerYeni = ["İsmail", "Ahmet", "Ali", "Gökhan"];
isimler.setAll(0, isimlerYeni);
print(isimler); // [İsmail, Ahmet, Ali, Gökhan]
```

## setRange

Belirtilen aralığa atama.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.setRange(1, 3, ["İsmail", "Ali"]);
print(isimler); // [Kaan, İsmail, Ali, Emir]
```

## shuffle

`List`'i rastgele olarak karıştırır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.shuffle();
print(isimler); // [Emir, Erkay, Altan, Kaan]
```

## sort

List'i veri tipine göre sıralar.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
isimler.sort();
print(isimler); // [Altan, Emir, Erkay, Kaan]
```

## sublist

`List`'i verilen indexten başlatır.

```dart
List isimler = ["Kaan", "Erkay", "Altan", "Emir"];
print(isimler.sublist(2)); // [Altan, Emir]
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dart.kaanksc.com/boeluem-1/list.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
