Bu bo‘limda Java’da bir nechta qiymatlarni saqlashni o‘rganamiz.
Oldingi mavzularda bitta qiymat saqladik:
String name = "Ali";
int age = 25;Lekin real dasturda ko‘pincha bitta emas, ko‘p qiymatlar bilan ishlaymiz:
10 ta user
100 ta product
1000 ta order
telefon raqamlar ro‘yxati
baholar ro‘yxatiShuning uchun Java’da array va collection ishlatiladi.
Bu qism quyidagilarni o‘z ichiga oladi: 1D & 2D arrays, ArrayList basics, HashMap basics, iterating collections.
1. Array nima?
Array - bir xil turdagi bir nechta qiymatlarni bitta joyda saqlaydigan tuzilma.
Masalan, 5 ta son saqlash:
int[] numbers = {10, 20, 30, 40, 50};Bu yerda:
int[] → int array
numbers → array nomi
{...} → qiymatlarOddiy qilib:
numbers degan qutida 5 ta int qiymat turibdi.2. Array index
Array elementlari index orqali olinadi.
Muhim qoida:
Java’da index 0 dan boshlanadi.int[] numbers = {10, 20, 30, 40, 50};
System.out.println(numbers[0]);
System.out.println(numbers[1]);
System.out.println(numbers[2]);Natija:
10
20
30Array ko‘rinishi:
index: 0 1 2 3 4
value: 10 20 30 40 50Demak:
numbers[0] // 10
numbers[1] // 20
numbers[4] // 503. Array elementini o‘zgartirish
Array ichidagi qiymatni index orqali o‘zgartirish mumkin:
int[] numbers = {10, 20, 30};
numbers[1] = 99;
System.out.println(numbers[1]);Natija:
99Oldin:
numbers[1] = 20Keyin:
numbers[1] = 994. Array uzunligi
Array uzunligini olish uchun .length ishlatiladi.
int[] numbers = {10, 20, 30, 40};
System.out.println(numbers.length);Natija:
4E’tibor ber:
numbers.lengthBu method emas, field. Shuning uchun qavs yozilmaydi.
Noto‘g‘ri:
numbers.length();To‘g‘ri:
numbers.length;5. Array yaratishning boshqa usuli
Agar qiymatlarni keyinroq beradigan bo‘lsak:
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;Bu yerda:
new int[3]3 ta int saqlaydigan array yaratadi.
Default qiymatlar:
int → 0
double → 0.0
boolean → false
String → null
object → nullMisol:
int[] numbers = new int[3];
System.out.println(numbers[0]);
System.out.println(numbers[1]);
System.out.println(numbers[2]);Natija:
0
0
06. Array chegarasidan chiqib ketish
Array’da mavjud bo‘lmagan indexga murojaat qilsak, xato bo‘ladi.
int[] numbers = {10, 20, 30};
System.out.println(numbers[3]);Bu xato:
ArrayIndexOutOfBoundsExceptionNega?
numbers length = 3
indexlar: 0, 1, 2
numbers[3] mavjud emasBoshlang'ichlar ko‘p qiladigan xatolar:
int[] numbers = {10, 20, 30};
for (int i = 0; i <= numbers.length; i++) {
System.out.println(numbers[i]);
}Bu noto‘g‘ri. Chunki oxirida i = 3 bo‘ladi.
To‘g‘ri:
int[] numbers = {10, 20, 30};
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}Muhim qoida:
i < array.length<= emas.
7. Array bo‘ylab yurish: for
String[] names = {"Ali", "Vali", "Sami"};
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}Natija:
Ali
Vali
SamiBu usul index kerak bo‘lganda yaxshi.
Masalan:
String[] names = {"Ali", "Vali", "Sami"};
for (int i = 0; i < names.length; i++) {
System.out.println(i + ": " + names[i]);
}Natija:
0: Ali
1: Vali
2: Sami8. Array bo‘ylab yurish: for-each
Agar index kerak bo‘lmasa, for-each osonroq.
String[] names = {"Ali", "Vali", "Sami"};
for (String name : names) {
System.out.println(name);
}Natija:
Ali
Vali
SamiTushunish:
names ichidagi har bir elementni olib, name degan variable’ga ber.9. for va for-each farqi
Holat | Tavsiya |
|---|---|
Index kerak bo‘lsa |
|
Faqat elementlarni o‘qish kerak bo‘lsa |
|
Elementni index orqali o‘zgartirish kerak bo‘lsa |
|
Kod o‘qilishi oson bo‘lishi kerak bo‘lsa |
|
Misol: elementni o‘zgartirish kerak bo‘lsa:
int[] numbers = {1, 2, 3};
for (int i = 0; i < numbers.length; i++) {
numbers[i] = numbers[i] * 2;
}Natija array ichida:
2, 4, 610. 2D array nima?
2D array - array ichida array. Jadvalga o‘xshaydi.
Masalan:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};Ko‘rinishi:
row 0: 1 2 3
row 1: 4 5 6
row 2: 7 8 9Element olish:
System.out.println(matrix[0][0]);
System.out.println(matrix[1][2]);
System.out.println(matrix[2][1]);Natija:
1
6
8Tushunish:
matrix[row][column]11. 2D array bo‘ylab yurish
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
System.out.print(matrix[row][col] + " ");
}
System.out.println();
}Natija:
1 2 3
4 5 6
7 8 9Bu yerda:
matrix.lengthrow soni.
matrix[row].lengthshu row ichidagi column soni.
12. Array muammosi
Array yaxshi, lekin bitta katta cheklovi bor:
Array uzunligi yaratilgandan keyin o‘zgarmaydi.Masalan:
int[] numbers = new int[3];Bu array faqat 3 ta element saqlaydi. Keyin 4-elementni qo‘shib bo‘lmaydi.
numbers[3] = 40; // xatoShuning uchun real loyihalarda ko‘pincha ArrayList ishlatiladi.
13. ArrayList nima?
ArrayList - o‘lchami o‘zgaradigan ro‘yxat.
Array:
fixed sizeArrayList:
dynamic sizeIshlatish uchun import kerak:
import java.util.ArrayList;Misol:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("Ali");
names.add("Vali");
names.add("Sami");
System.out.println(names);
}
}Natija:
[Ali, Vali, Sami]14. ArrayList generic type
ArrayList<String> names = new ArrayList<>();Bu degani:
Bu ro‘yxatda faqat String saqlanadi.Sonlar uchun:
ArrayList<Integer> numbers = new ArrayList<>();E’tibor ber:
ArrayList<int> numbers = new ArrayList<>(); // xatoTo‘g‘ri:
ArrayList<Integer> numbers = new ArrayList<>();Nega?
Chunki collection’lar primitive type bilan emas, object type bilan ishlaydi.
Primitive | Wrapper class |
|---|---|
|
|
|
|
|
|
|
|
|
|
15. ArrayList asosiy methodlari
add()
Element qo‘shadi.
ArrayList<String> names = new ArrayList<>();
names.add("Ali");
names.add("Vali");get()
Index bo‘yicha element oladi.
System.out.println(names.get(0));Natija:
Aliset()
Indexdagi elementni o‘zgartiradi.
names.set(1, "Sami");remove()
Elementni o‘chiradi.
names.remove("Ali");Yoki index bo‘yicha:
names.remove(0);size()
Elementlar sonini qaytaradi.
System.out.println(names.size());E’tibor ber:
array.length
arrayList.size()Array’da length, ArrayList’da size().
contains()
Element bor-yo‘qligini tekshiradi.
boolean exists = names.contains("Ali");
System.out.println(exists);16. ArrayList bilan to‘liq misol
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> users = new ArrayList<>();
users.add("Ali");
users.add("Vali");
users.add("Sami");
System.out.println("Users count: " + users.size());
System.out.println("First user: " + users.get(0));
users.set(1, "Hasan");
users.remove("Sami");
for (String user : users) {
System.out.println(user);
}
}
}Natija:
Users count: 3
First user: Ali
Ali
Hasan17. ArrayList bo‘ylab yurish
Index bilan:
ArrayList<String> names = new ArrayList<>();
names.add("Ali");
names.add("Vali");
names.add("Sami");
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}for-each bilan:
for (String name : names) {
System.out.println(name);
}Ko‘p hollarda for-each o‘qilishi osonroq.
18. HashMap nima?
HashMap - key-value ko‘rinishida ma’lumot saqlaydi.
Ya’ni har bir qiymatning kaliti bo‘ladi.
Masalan:
phoneBook:
Ali → +998901111111
Vali → +998902222222
Sami → +998903333333Java’da:
import java.util.HashMap;
HashMap<String, String> phoneBook = new HashMap<>();
phoneBook.put("Ali", "+998901111111");
phoneBook.put("Vali", "+998902222222");
phoneBook.put("Sami", "+998903333333");Bu yerda:
HashMap<String, String>Birinchi String - key type.
Ikkinchi String - value type.
key → name
value → phone number19. HashMap asosiy methodlari
put()
Key-value qo‘shadi yoki mavjud key qiymatini yangilaydi.
phoneBook.put("Ali", "+998901111111");Agar Ali oldin bor bo‘lsa, qiymati yangilanadi.
phoneBook.put("Ali", "+998909999999");get()
Key bo‘yicha value oladi.
String phone = phoneBook.get("Ali");
System.out.println(phone);Natija:
+998901111111containsKey()
Key bor-yo‘qligini tekshiradi.
if (phoneBook.containsKey("Ali")) {
System.out.println("Ali bor");
}remove()
Key bo‘yicha elementni o‘chiradi.
phoneBook.remove("Ali");size()
Elementlar sonini qaytaradi.
System.out.println(phoneBook.size());20. HashMap bilan to‘liq misol
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> scores = new HashMap<>();
scores.put("Ali", 90);
scores.put("Vali", 75);
scores.put("Sami", 88);
System.out.println("Ali score: " + scores.get("Ali"));
if (scores.containsKey("Vali")) {
System.out.println("Vali bor");
}
scores.put("Vali", 80);
scores.remove("Sami");
System.out.println(scores);
}
}Natija:
Ali score: 90
Vali bor
{Vali=80, Ali=90}HashMap’da tartib kafolatlanmaydi. Shuning uchun natija tartibi boshqacha chiqishi mumkin.
21. HashMap bo‘ylab yurish
Faqat key’lar bo‘yicha
for (String name : scores.keySet()) {
System.out.println(name);
}Faqat value’lar bo‘yicha
for (Integer score : scores.values()) {
System.out.println(score);
}Key va value birga
for (String name : scores.keySet()) {
Integer score = scores.get(name);
System.out.println(name + ": " + score);
}Yaxshiroq usul:
for (var entry : scores.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}Agar var ishlatmasak:
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}Bunda import kerak:
import java.util.Map;22. Array, ArrayList, HashMap farqi
Tuzilma | Qachon ishlatiladi? | Misol |
|---|---|---|
| O‘lcham oldindan aniq bo‘lsa | 7 kunlik hafta |
| Ro‘yxat o‘zgarib tursa | userlar ro‘yxati |
| Key orqali tez topish kerak bo‘lsa | username → userId |
Oddiy misol:
Array → 5 ta baho
ArrayList → buyurtmalar ro‘yxati
HashMap → productId bo‘yicha product topish23. Real hayotga yaqin misol
Tasavvur qil: mini shop dasturi bor.
Mahsulot nomlari ro‘yxati:
ArrayList<String> products = new ArrayList<>();
products.add("Laptop");
products.add("Mouse");
products.add("Keyboard");Mahsulot narxlari:
HashMap<String, Double> prices = new HashMap<>();
prices.put("Laptop", 1000.0);
prices.put("Mouse", 20.0);
prices.put("Keyboard", 50.0);Chiqarish:
for (String product : products) {
Double price = prices.get(product);
System.out.println(product + " = $" + price);
}Natija:
Laptop = $1000.0
Mouse = $20.0
Keyboard = $50.0Bu yerda:
ArrayList → productlar tartibli ro‘yxati
HashMap → product nomi orqali narx olish24. null bilan ehtiyot bo‘lish
HashMap’da mavjud bo‘lmagan key bo‘yicha get() qilsak, null qaytadi.
HashMap<String, Integer> scores = new HashMap<>();
scores.put("Ali", 90);
System.out.println(scores.get("Sami"));Natija:
nullShuning uchun tekshirish yaxshi:
if (scores.containsKey("Sami")) {
System.out.println(scores.get("Sami"));
} else {
System.out.println("Sami topilmadi");
}Yoki default qiymat berish:
Integer score = scores.getOrDefault("Sami", 0);
System.out.println(score);Natija:
025. Boshlang'ichlar xatolari
Xato 1: Array index 1 dan boshlanadi deb o‘ylash
Noto‘g‘ri:
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]); // birinchi element deb o‘ylashAslida bu ikkinchi element.
To‘g‘ri:
System.out.println(numbers[0]); // birinchi elementXato 2: length va size()ni adashtirish
Array:
numbers.lengthArrayList:
names.size()String:
text.length()E’tibor ber:
array.length → field
arrayList.size() → method
string.length() → methodXato 3: ArrayList’da primitive type ishlatish
Noto‘g‘ri:
ArrayList<int> numbers = new ArrayList<>();To‘g‘ri:
ArrayList<Integer> numbers = new ArrayList<>();Xato 4: HashMap’da mavjud bo‘lmagan key
Integer score = scores.get("Sami");
System.out.println(score + 10);Agar "Sami" yo‘q bo‘lsa, score = null. Keyin score + 10 xato berishi mumkin.
Yaxshi variant:
Integer score = scores.getOrDefault("Sami", 0);
System.out.println(score + 10);26. Kichik mashq
Vazifa
Quyidagi ishni bajaring:
1. ArrayList ichida 5 ta product nomi saqla
2. HashMap ichida product narxlarini saqla
3. Har bir product nomi va narxini chiqar
4. Narxi 100 dan katta productlarni alohida chiqarYechim:
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
ArrayList<String> products = new ArrayList<>();
products.add("Laptop");
products.add("Mouse");
products.add("Keyboard");
products.add("Monitor");
products.add("USB Cable");
HashMap<String, Double> prices = new HashMap<>();
prices.put("Laptop", 1000.0);
prices.put("Mouse", 20.0);
prices.put("Keyboard", 50.0);
prices.put("Monitor", 200.0);
prices.put("USB Cable", 5.0);
System.out.println("All products:");
for (String product : products) {
double price = prices.get(product);
System.out.println(product + " = $" + price);
}
System.out.println("Expensive products:");
for (String product : products) {
double price = prices.get(product);
if (price > 100) {
System.out.println(product + " = $" + price);
}
}
}
}Natija:
All products:
Laptop = $1000.0
Mouse = $20.0
Keyboard = $50.0
Monitor = $200.0
USB Cable = $5.0
Expensive products:
Laptop = $1000.0
Monitor = $200.027. Qisqa xulosa
Bu bo‘limda Java’da bir nechta qiymat bilan ishlashni ko‘rdik:
Array → fixed size ro‘yxat
2D array → jadval ko‘rinishidagi array
ArrayList → dynamic size ro‘yxat
HashMap → key-value saqlash
for → index bilan yurish
for-each → elementlar bo‘ylab oson yurishEng muhim eslab qoladigan joy:
Array index 0 dan boshlanadi.
Array uzunligi o‘zgarmaydi.
ArrayList uzunligi o‘zgaradi.
HashMap key orqali value topadi.