5.00 / 1 oy

Java'da bir dizide tekrar eden kayıtları bulmak ve silmek

Java'da dizi içerisinde saklamakta olduğumuz tamsayılardan mükerrer olanları silmek istediğimiz bir örnek yapalım. Ancak dizilerde (vektörler ve matrisler) dizi boyutları değiştirilemediği için iki seçeneğimiz var. Birincisi temizlenmiş diziyi yeni bir diziye kopyalamak, ikincisi ise mükerrer olan kayıtları 0 yapmak. Biz bu örnekte ikinci seçeneği takip edeceğiz.

Peki tekrar eden verileri nasıl tespit edeceğiz? Akla gelen ilk iki yol:

1. Dizi elemanlarını sıralamak ve yan yana gelen elemanlardan aynı olanları 0 yapmak. Peki ya aynı elemandan 3 tane varsa? Bu sefer yan yana gelen 3 elemanı karşılaştırmak gerek. 4 olursa? 5 de olabilir.. Bu yüzden bu algoritmayı seçmek hatalı olur.

2. Her bir dizi elemanının kaç kez geçtiğini takip ettiğimiz bir frekans vektörü oluşturmak. Dizi elamanlarımız 1 ile 9 arasındaki sayılardan oluşuyorsa 9 eleman saklayan bir frekans dizisi tanımlayalım. Sonra da birden fazla kez tekrar eden dizi elemanlarını 0 ile değiştirelim.

İkinci algoritma üzerinden kodlar:

//elemanlarını elimizle seçtiğimiz bir dizi üretelim
int[] dizi = {5, 6, 2, 1, 9, 2, 4, 2, 4, 6, 9, 8, 2, 6};
int[] frekanslar=new int[9];

for (int i=0; i<dizi.length; i++)
{
	frekanslar[dizi[i]-1]++;
	
	if (frekanslar[dizi[i]-1] > 1)
		dizi[i]=0;
}

for (int i=0; i<dizi.length; i++)
{
	if (dizi[i] != 0)
		System.out.print(dizi[i]+" ");
}

Çıktı:

5 6 2 1 9 4 8 

utku33

20.02.2020 01:12

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Java'da bir dizide tekrar eden kayıtları bulmak ve silmek

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.