Java'da Veri Temizleme
Dennis Lee
Software Engineer
| Ham Kategori | Miktar |
|---|---|
| Fruits & Vegetables | 10 |
| fruits & veg | 20 |
| Fruits&Veg | 30 |
FRUITS_AND_VEGETABLES
DAIRY
UNCATEGORIZED
Fruits & Vegetables -> FRUITS_AND_VEGETABLES
fruits & veg -> FRUITS_AND_VEGETABLES
Fruits&Veg -> FRUITS_AND_VEGETABLES
FRUITS_AND_VEGETABLES gibi kategorileri say// Standart kategorileri tanımla
public enum ProductCategory {
FRUITS_AND_VEGETABLES,
DAIRY,
UNCATEGORIZED;
}
// Örnek kategori
System.out.println(ProductCategory.FRUITS_AND_VEGETABLES);
FRUITS_AND_VEGETABLES
import java.util.HashMap;
import java.util.Map;
// Ham kategori varyasyonlarını standart kategorilere eşleştir
Map<String, ProductCategory> rawCategories = new HashMap<>();
// Varyasyon 1: Fruits & Vegetables
rawCategories.put("Fruits & Vegetables", ProductCategory.FRUITS_AND_VEGETABLES);
// Varyasyon 2: fruits & veg
rawCategories.put("fruits & veg", ProductCategory.FRUITS_AND_VEGETABLES);
// Varyasyon 3: Fruits&Veg
rawCategories.put("Fruits&Veg", ProductCategory.FRUITS_AND_VEGETABLES);
System.out.println(rawCategories.get("fruits & veg")); // Standart kategoriyi al
FRUITS_AND_VEGETABLES
rawCategories: sadece görselleştirme için; sütunlar Map içindeki anahtar-değer çiftlerini gösterir
| Ham Kategori | Standart Kategori |
|---|---|
| Fruits & Vegetables | FRUITS_AND_VEGETABLES |
| fruits & veg | FRUITS_AND_VEGETABLES |
| Fruits&Veg | FRUITS_AND_VEGETABLES |
String unknownCategory = "Mystery Category";
// Kategori rawCategories içinde yoksa UNCATEGORIZED döndür
ProductCategory category = rawCategories.getOrDefault(
unknownCategory, ProductCategory.UNCATEGORIZED);
System.out.println("Unknown: " + category);
Mystery Category: UNCATEGORIZED
| Ham Kategori | Standart Kategori |
|---|---|
| Mystery Category | UNCATEGORIZED |
import java.util.Collections;
Map<String, ProductCategory> categories = Collections.unmodifiableMap(rawCategories); // Değiştirilemez görünüm oluşturtry { categories.put("new", ProductCategory.DAIRY); // Hata fırlatır } catch (UnsupportedOperationException e) { System.out.println("Değiştirilemez map değiştirilemez"); }
Cannot modify immutable map
// Market envanteri veri kümemizden kategori ve miktarı çıkar
Map<String, Integer> rawData =
Map.of("Fruits & Vegetables", 10,
"fruits & veg", 20,
"Fruits&Veg", 30);
rawData: Market envanteri veri kümemize göre çıkarılan eşleme
| Ham Kategori | Miktar |
|---|---|
| Fruits & Vegetables | 10 |
| fruits & veg | 20 |
| Fruits&Veg | 30 |
Map<ProductCategory, Integer> stockByCategory = new EnumMap<ProductCategory, Integer>(ProductCategory.class);rawData.forEach((raw, quantity) -> // Standart kategoriyi categories içinde bul ve miktarları topla stockByCategory.merge(categories.get(raw), quantity, Integer::sum));
categories: Standart kategori bakmak için kullanılan eşleme
| Ham Kategori | Standart Kategori |
|---|---|
| Fruits & Vegetables | FRUITS_AND_VEGETABLES |
| fruits & veg | FRUITS_AND_VEGETABLES |
| Fruits&Veg | FRUITS_AND_VEGETABLES |
System.out.println(stockByCategory);
{FRUITS_AND_VEGETABLES=60}
stockByCategory: rawDatayı categoryMap içinde aradıktan sonraki eşleme
| Standart Kategori | Miktar |
|---|---|
| FRUITS_AND_VEGETABLES | 60 |
1) Veri kümemizden kategori/miktar rawData map'ini çıkar (aşağıda parça)
| Ham Kategori | Miktar |
|---|---|
| Fruits & Vegetables | 10 |
2) Standart kategorileri aramak için categories oluştur (aşağıda parça)
| Ham Kategori | Standart Kategori |
|---|---|
| Fruits & Vegetables | FRUITS_AND_VEGETABLES |
3) rawDatayı categories içinde arayıp stockByCategory hesapla (aşağıda parça)
| Standart Kategori | Miktar |
|---|---|
| FRUITS_AND_VEGETABLES | 60 |
Temel İçe Aktarımlar
import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
enum oluşturHashMap ile bir kategori eşlemesi kurCollections.unmodifiableMap ile eşlemeyi değiştirilemez yap.getOrDefault() ile bilinmeyenleri ele al.merge() ile standartlaştırılmış kategorilere göre gruplaJava'da Veri Temizleme