<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Sekkaşı'nın Bayırı » Yazilim</title>
	
	<link>http://orhanbalci.net/tr</link>
	<description>Bayatlı'nın Düşünce Değirmeninden Sızanlar</description>
	<lastBuildDate>Sat, 21 Aug 2010 11:44:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/orhanbalci" /><feedburner:info uri="orhanbalci" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Eclipse Video Ders (Screencast) #4 – Hibernate Kullanımı</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/a4w4FHJb-RE/</link>
		<comments>http://orhanbalci.net/tr/?p=805#comments</comments>
		<pubDate>Fri, 20 Aug 2010 20:32:25 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Video Ders]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=805</guid>
		<description><![CDATA[





		
			Bunu del.icio.us 'da paylaşın
		
		
			Bunu Digg'leyin!
		
		
			Beğendiniz mi?  StumbleUpon'da paylaşın 
		
		
			Bunu MySpace'de paylaşın
		
		
			Bunu Facebook'da paylaşın
		
		
			Bunu Tweet'leyin!
		
		
			Bu yazının yorumlarına abone olun!
		
		
			Bunu Linkedin'de paylaşın 
		
		
			Bunu Friendfeed'de paylaşın
		
		
			Bunu Slashdot'da saklayın 
		
		
			Blog this on Blogger
		







İlgili Yazılar:Eclipse Video Ders (Screencast) #1 Extract Method Refactoring Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=26' rel='bookmark' title='Permanent Link: Eclipse Video Ders (Screencast) #1 Extract Method Refactoring'>Eclipse Video Ders (Screencast) #1 Extract Method Refactoring</a> <small>Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...</small></li><li><a href='http://orhanbalci.net/tr/?p=28' rel='bookmark' title='Permanent Link: Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring'>Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring</a> <small>Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...</small></li><li><a href='http://orhanbalci.net/tr/?p=27' rel='bookmark' title='Permanent Link: Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring'>Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring</a> <small>Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" /><div id="attachment_806" class="wp-caption aligncenter" style="width: 477px"><a href="http://orhanbalci.net/tr/wp-content/uploads/screencast/eclipse_hibernate.htm"><img src="http://orhanbalci.net/tr/wp-content/uploads/hibernate_kapak.png" alt="Hibernate Kullanımı" title="hibernate_kapak" width="467" height="304" class="size-full wp-image-806" /></a><p class="wp-caption-text">Hibernate Kullanımı</p></div></p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=805&amp;title=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=805&amp;title=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=805&amp;title=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=805&amp;t=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=805&amp;t=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1+-+http://b2l.me/ajsts5+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=805&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=805&amp;title=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1&amp;summary=&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1&amp;link=http://orhanbalci.net/tr/?p=805" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=805&amp;title=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=805&amp;n=Eclipse+Video+Ders+%28Screencast%29+%234+-+Hibernate+Kullan%C4%B1m%C4%B1&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=26' rel='bookmark' title='Permanent Link: Eclipse Video Ders (Screencast) #1 Extract Method Refactoring'>Eclipse Video Ders (Screencast) #1 Extract Method Refactoring</a> <small>Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...</small></li><li><a href='http://orhanbalci.net/tr/?p=28' rel='bookmark' title='Permanent Link: Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring'>Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring</a> <small>Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...</small></li><li><a href='http://orhanbalci.net/tr/?p=27' rel='bookmark' title='Permanent Link: Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring'>Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring</a> <small>Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/a4w4FHJb-RE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=805</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=805</feedburner:origLink></item>
		<item>
		<title>Java Dersleri 18 – Network Programlama – UDP</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/ir1CPXUqdiw/</link>
		<comments>http://orhanbalci.net/tr/?p=769#comments</comments>
		<pubDate>Wed, 28 Jul 2010 10:05:39 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Java Ders]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[UDP]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=769</guid>
		<description><![CDATA[Bu makalede Java&#8217;nın network programlama kabiliyetlerinden bahsedeceğim. UDP protokolü uygulamalar arasında datagram adı verilen paketler aracılığıyla haberleşme sağlar. Bu protokol gönderilen paketlerin karşı tarafa gönderilip gönderilmemesi konusunda garanti vermediği gibi paketlerin gönderim sırasında alınmasını da garanti etmez. Herhangi bir datagram paketi gönderebilmek için bir adrese ve port numarasına ihtiyaç duyarsınız. Adres bilgisi paketin ağ üzerinde [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=14' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Temel Kullanım'>Swing Programlama: JTable Temel Kullanım</a> <small>Bu yazımızda en basit haliyle Java UI programlamada sıkça kullandığımız...</small></li><li><a href='http://orhanbalci.net/tr/?p=16' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Hücre Editörleri'>Swing Programlama: JTable Hücre Editörleri</a> <small>Bu yazıda kısaca JTable hücreleri için öntanımlı olan editörün dışında...</small></li><li><a href='http://orhanbalci.net/tr/?p=727' rel='bookmark' title='Permanent Link: Swing Programlama : JFileChooser'>Swing Programlama : JFileChooser</a> <small>Bu derste Java swing arayüzlerimizden sistemimizdeki dosya sistemine erişimi sağlayan...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Bu makalede Java&#8217;nın network programlama kabiliyetlerinden bahsedeceğim. UDP protokolü uygulamalar arasında datagram adı verilen paketler aracılığıyla haberleşme sağlar. Bu protokol gönderilen paketlerin karşı tarafa gönderilip gönderilmemesi konusunda garanti vermediği gibi paketlerin gönderim sırasında alınmasını da garanti etmez. Herhangi bir datagram paketi gönderebilmek için bir <strong>adrese</strong> ve <strong>port</strong> numarasına ihtiyaç duyarsınız. Adres bilgisi paketin ağ üzerinde hangi bilgisayara gönderileceğini belirlerken port bilgisi ise o paketin hangi uygulama için gönderildiğini saptar. Ağ üzerinden haberleşme kabiliyetine sahip uygulamalar genellikle istemci-sunucu yapısına sahiptir. Veri akışı istemcinin sunucuya herhangi bir istek göndermesiyle başlar. Sunucu ise sürekli kendine gelen isteklere cevap verir. Dolayısıyla bu tarz uygulamalar geliştirilirken istemci ve sunucu tarafı koordineli bir şekilde geliştirilir.<br />
<span id="more-769"></span><br />
Öncelikle sunucu tarafına bir göz atalım. Sunucu tarafında yapmamız gereken iş belirli bir portu dinlemek ve gelen istekleri anlamlandırıp cevap yollamak. Ağ üzerinden herhangi bir portu dinlemek veya o porta datagram paketi yazmak için kullandığımız Java sınıfı <strong>DatagramSocket</strong> sınıfıdır.  Örneğin 6161 portundan paket almak isteyen bir sunucu sınıfmız : </p>
<pre class="brush: java">
DatagramSocket socket = new DatagramSocket(6161);
byte[] buffer = new byte[24];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
</pre>
<p>satırlarını kullanabilir. Burada dikkatimizi çekmesi gereken nokta <strong>receive </strong>metodunun blocking olması. Yani programımız receive metoduna geldiğinde soketten herhangi bir paket okuyana kadar beklemesi. Dikkatli olunmazsa programımızın takılmasına sebep olabilir. Bu problemi çözmek için bu işlemlerin ayrı bir thread içinde gerçekleştirilmesi gerekir. Ayrıca sunucu yazılımımız soketten tek bir paket değil sürekli veri alması gerekir onun için de bir loop içinde veri okuması gerekir.</p>
<pre class="brush: java">
 public void run() {
        while (isRunning()) {
                byte[] buffer = new byte[24];
                DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
                socket_.receive(packet);
        }
}
</pre>
<p>Görüleceği üzere veri byte array olarak okunmaktadır. Veriyi anlamlandırmak yani uygulama protokolünü geliştirmek uygulamanın görevidir.  Peki bu paketin hangi bilgisayardan geldiğini nasıl anlayacağız? Bunun cevabı da gayet basit : </p>
<pre class="brush: java">
InetAddress address = packet.getAddress();
int port = packet.getPort();
</pre>
<p>DatagramPacket sınıfının getAddress ve getPort metodlarını kullanarak paketin hangi bilgisayardan gönderildiğini<br />
anlayabiliriz. Bu bilgileri yanıt mesajını gönderirken kullanmak üzere saklamanız gereklidir.  Paketimizi networkten alıp gönderenin adresini de kaydettikten sonra paketimizdeki veriyi okumayı öğrenelim. Daha önce de belirttiğim üzere DatagramPacket içinde veri byte array olarak saklanır. Onun için byte array&#8217;den temel tipleri (int, bool, String) okumayı öğrenmek gerekir. Burada dikkat etmemiz gereken şey sunucu ve istemci tarafında aynı yazma ve okuma mekanizmasını kullanmak gerektiğidir. Temel tipleri okumak ve yazmak için DataInputStream ve DataOutputStream sınıflarından faydalanabiliriz. Tabi işlem yaptığımız nesne byte array olduğu için bu sınıfları ByteArrayInputStream ve ByteArrayOutputStream sınıflarını sarmalayacak şekilde kullanmalıyız. Örneğin byte arrayden temel veri tiplerini okumak için şu kod satırlarından yararlanılabilir : </p>
<pre class="brush: java">
ByteArrayInputStream bis = new ByteArrayInputStream(packet.getData());
DataInputStream dis = new DataInputStream(bis);
int index = dis.readInt();
</pre>
<p>Burada packet.getData() ile paketimizde bulunan byte array veri alınmıştır. Oluşturulan ByteArrayInputStream DataInputStream ile sarmalanarak byte array&#8217;den temel veri tiplerini kolayca okuyacak bir nesne elde edilmiştir.<br />
Aynı senaryonun yazma kısmına bakacak olursak : </p>
<pre class="brush: java">
ByteArrayOutputStream baous2 = new ByteArrayOutputStream();
DataOutputStream os = new DataOutputStream(baous2);
os.writeInt(j);
os.flush();
byte[] chunk = baous2.toByteArray();
</pre>
<p>Buradan hareketle yukarıda hazırladığımız veriyi istemciden sunucuya nasıl gönderileceğini göstererek dersimizi sonlandıralım : </p>
<pre class="brush: java">
 InetAddress address = InetAddress.getByName(&quot;localhost&quot;);
 DatagramPacket packet = new DatagramPacket(chunk, chunk.length, address, 6161);
 socket_.send(packet);
</pre>
<p>Buradaki kod satırlarında yukarıda elde ettiğimiz byte arrayinden bir DatagramPacket nesnesi oluşturup yine DatagramSocket nesnemiz ile localhost 6161 numaralı porta yolluyoruz.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=769&amp;title=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=769&amp;title=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=769&amp;title=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=769&amp;t=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=769&amp;t=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP+-+http://b2l.me/ac8pwb+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=769&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=769&amp;title=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP&amp;summary=Bu%20makalede%20Java%27n%C4%B1n%20network%20programlama%20kabiliyetlerinden%20bahsedece%C4%9Fim.%20UDP%20protokol%C3%BC%20uygulamalar%20aras%C4%B1nda%20datagram%20ad%C4%B1%20verilen%20paketler%20arac%C4%B1l%C4%B1%C4%9F%C4%B1yla%20haberle%C5%9Fme%20sa%C4%9Flar.%20Bu%20protokol%20g%C3%B6nderilen%20paketlerin%20kar%C5%9F%C4%B1%20tarafa%20g%C3%B6nderilip%20g%C3%B6nderilmemesi%20konusunda%20garanti%20vermedi%C4%9Fi%20gibi%20paketle&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP&amp;link=http://orhanbalci.net/tr/?p=769" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=769&amp;title=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=769&amp;n=Java+Dersleri+18+%E2%80%93+Network+Programlama+-+UDP&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=14' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Temel Kullanım'>Swing Programlama: JTable Temel Kullanım</a> <small>Bu yazımızda en basit haliyle Java UI programlamada sıkça kullandığımız...</small></li><li><a href='http://orhanbalci.net/tr/?p=16' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Hücre Editörleri'>Swing Programlama: JTable Hücre Editörleri</a> <small>Bu yazıda kısaca JTable hücreleri için öntanımlı olan editörün dışında...</small></li><li><a href='http://orhanbalci.net/tr/?p=727' rel='bookmark' title='Permanent Link: Swing Programlama : JFileChooser'>Swing Programlama : JFileChooser</a> <small>Bu derste Java swing arayüzlerimizden sistemimizdeki dosya sistemine erişimi sağlayan...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/ir1CPXUqdiw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=769</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=769</feedburner:origLink></item>
		<item>
		<title>Java Dersleri 17 – JDBC API (Veritabanı Bağlantısı)</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/kqzmOg_MpC4/</link>
		<comments>http://orhanbalci.net/tr/?p=750#comments</comments>
		<pubDate>Thu, 27 May 2010 18:17:52 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Java Ders]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Veri Tabanı]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=750</guid>
		<description><![CDATA[Bu makalede Java&#8217;nın veritabanı kabiliyetlerinden bahsedeceğim. Java&#8217;nın tüm veritabanlarına ulaşmak için kullandığı ortak bir API vardır. JDBC (Java Database Connectivity ) API uygulamamızı arka taraftaki veritabanı sisteminden soyutlamamıza olanak tanır. Bunu yapabilmek için elimizde bağlanmak isetdiğimiz veritabının JDBC sürücüsü olmalıdır. Örneğin HSQLDB bağlantısı yapmak istiyorsak bu veritabanı yönetim sistemine ait JDBC sürücüsünü içeren JAR dosyasını [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=92' rel='bookmark' title='Permanent Link: Java Dersleri 4 &#8211; Erişim Denetleyicileri (Access Modifiers)'>Java Dersleri 4 &#8211; Erişim Denetleyicileri (Access Modifiers)</a> <small> Bu dersimizde Java&#8217;nın metodlar ve sınıflar üzerinde erişim kurallarını...</small></li><li><a href='http://orhanbalci.net/tr/?p=116' rel='bookmark' title='Permanent Link: Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)'>Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)</a> <small>Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Bu makalede Java&#8217;nın veritabanı kabiliyetlerinden bahsedeceğim. Java&#8217;nın tüm veritabanlarına ulaşmak için kullandığı ortak bir API vardır. JDBC (Java Database Connectivity ) API uygulamamızı arka taraftaki veritabanı sisteminden soyutlamamıza olanak tanır. Bunu yapabilmek için elimizde bağlanmak isetdiğimiz veritabının JDBC sürücüsü olmalıdır. Örneğin HSQLDB bağlantısı yapmak istiyorsak bu veritabanı yönetim sistemine ait JDBC sürücüsünü içeren JAR dosyasını projemize eklemeliyiz. Daha sonra bu JAR dosyası içinde bulunan driver sınıfını proje içindeyken JVM&#8217;e yüklenmesini sağlamalıyız. <span id="more-750"></span></p>
<pre class="brush: java">
Class.forName(&quot;org.hsqldb.jdbcDriver&quot;);
</pre>
<p>Yukarıdaki kod satırı HSQLDB sürücü sınıfını JVM&#8217;e yükler. Bu sürücüyü kullanarak veritabanına bağlantı elde etmek için ise : </p>
<pre class="brush: java">
hsqldbConnection = DriverManager.getConnection(&quot;jdbc:hsqldb:file:&quot;+ databaseName, userName, password);
</pre>
<p> Buradaki ilk parametre bağlanmak istediğiniz veritabanı tipine göre değişecektir. Buradaki hsqldbConnection nesnesi java.sql.Connection arayüzünü gerçekler. Bu arayüzde veritabanı işlemleri yaparken kullanacağımız metodlar bulunur. Bağlantıyı sağladıktan sonra yapmak isteyeceğimiz ilk şey muhtemel bir SQL sorgusu çalıştırmak olacaktır. Bunun için Connection arayüzünün prepareStatement() metodlarını kullanabiliriz. </p>
<pre class="brush: java">
public ResultSet runSelectQuery(String sqlSorgu) throws SQLException
{
Statement s = hsqldbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,            ResultSet.CONCUR_UPDATABLE);
return  s.executeQuery(sqlSorgu);
}
</pre>
<p>Yukarıdaki metod bir sql sorgusu (SELECT) çalıştırarak sonucunu ResultSet nesnesi olarak dışarıya vermektedir.  Burada Connection nesnemizden create statement() metoduyla bir Statement nesnesi oluşturduk. Bu nesneyi kullanarak da elimizdeki sql sorgusunu çalıştırdık. SELECT sorgusu bize sonuç döndüğü içn executeQuery() metodunu kullandık. Eğer sonuç dönmeyen UPDATE, DELETE tarzı sql sorgusu çalıştırmak isteseydik executeUpdate() metoduna başvurmalıydık. Burada kullanımı görelim : </p>
<pre class="brush: java">
public int runInsertUpdateQuery(String query) throws SQLException
{
Statement s = hsqldbConnection.createStatement();
return s.executeUpdate(query);
}
</pre>
<p>Temel olarak yukarıda anlattığım yöntemle veritabanında istediğiniz sorguyu çalıştırabilirsiniz. Bunun dışında veritabanındaki Stored Procedure&#8217;leri çalıştırmak isterseniz Connection arayüzünün prepareCall() metodu kullanılmalıdır. Bu metoda vereceğiniz parametre {? = call prosedürismi(?,?)} şeklinde veya  {call prosedürismi(?,?)}  şeklinde olabilir.  Burada öenmli olan nokta çıktı veren prosedürlerde çağırım yapılmadan önce çıktı tiplerinin tanıtılmasıdır. Bir örnekle kullanımı görelim : </p>
<pre class="brush: java">
 public void callProcedure(String procedure) throws SQLException
{
CallableStatement s =hsqldbConnection.prepareCall(&quot;{ ? = yasi_ver(?) }&quot;);
s.registerOutParameter(1, Types.INTEGER);
s.setString(2, &quot;orhan&quot;);
s.execute();
int yas = s.getInt(1);
}
</pre>
<p>Bu örneğimizde veritabanında olduğunu farz ettiğimiz yasi_ver prosedürünü çalıştırdık. Bu prosedür parametre olarak String tipinde bir isim alıyor ver geriye o kişinin int tipinde yaşını dönüyor. Prosedürü çalıştırmadan önce  registerOutParameter() metoduyla geri alacağımız değeri bildiriyoruz.</p>
<p>JDBC ile ilgili olarak bilmemiz gereken bir diğer özellik ise arkadaki VTYS&#8217;den bağımsız olarak scaler fonksiyonları çağırabilme özelliğidir. Scalar fonksiyonlardan kasıt bize sayısal değer dönen COUNT() DATE_TIME() tarzı fonksiyonlardır. Her JDBC driveri bütün scalar fonksiyonları desteklemez. Kullandığınız driver&#8217;in desteklediği scalar fonksiyonları listelemek için : </p>
<pre class="brush: java">
 hsqldbConnecion =  (Connection) DriverManager.getConnection(&quot;jdbc:hsqldb:file:&quot;
				+ databaseName, userName, password);
 hsqldbConnecion.setAutoCommit(true);
 DatabaseMetaData dbmd = hsqldbConnecion.getMetaData();
 System.out.println(dbmd.getNumericFunctions());
</pre>
<p>Yukarıda gördüğümüz üzere Connection nesnemizden DataBaseMetaData&#8217;sını sorgulayıp oradan veritabanının desteklediği numeric fonksiyonların listesine ulaşabiliyoruz. Bu fonksiyonlardan herhangi birini çağırmak için ise : </p>
<pre class="brush: java">
Statement s = hsqldbConnecion.createStatement();
ResultSet rs = s.executeQuery(&quot;{ABS(-3)}&quot;);
</pre>
<p>satırlarını kullanıyoruz. </p>
<p>Burada ResultSet&#8217;lerin özelliklerine de değinmek istiyorum. Yaptığımız sorguların karşılığında Statement nesneleri bize ResultSet nesnesi döner. ResultSet nesnelerinin tamamı üzerinde istediğimiz şekilde gezinmemize olanak tanımazlar. JDBC sürücüleri genel olarak 3 tip ResultSet gezinimi desteklerler. Bunlar : </p>
<blockquote><p>
ResultSet.TYPE_FORWARD_ONLY : Bu ResultSet üzerinde kursör sadece ileri doğru gider. Sadece tek sefer okuma mümkündür.<br />
ResultSet.TYPE_SCROLL_INSENSITIVE : Bu ResultSet üzerinde kursör ileri geri gidebilir. Bu esnada veri tabanında tabloda meydana gelen değişiklikler ResultSet nesnesine yansımaz.<br />
ResultSet.TYPE_SCROLL_SENSITIVE : 2. tip ResultSet&#8217;ten farkı okuma esnasında tabloda meydana gelen değişikliklerin ResultSet nesnesine yansıtılmasıdır.
</p></blockquote>
<p>ResultSet&#8217;lerin diğer önemli bir özelliği de güncellenebilir olup olmamalarıdır. Bu özelliği yukarıdaki özellikle birlikte createStatement metoduna parametre olarak veriyoruz. Örneğin Result set üzerinde ileri geri gitmek ve istediğimiz satırı ResultSet üzerinde değiştirebilmek istiyorsak şu satırları kullanmalıyız: </p>
<pre class="brush: java">
Statement stmt = hsqldbConnecion.createStatement(
                       ResultSet.TYPE_SCROLL_INSENSITIVE,
                       ResultSet.CONCUR_UPDATEABLE);
ResultSet scrollingRS = stmt.executeQuery(&quot;SELECT * FROM kullanicilar&quot;);
</pre>
<p>Referanslar:<br />
<a href="http://www.ibm.com/developerworks/java/library/j-5things10.html?ca=drs-">JDBC Hakkında Bilmediğiniz 5 Şey</a></p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=750&amp;title=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=750&amp;title=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=750&amp;title=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=750&amp;t=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=750&amp;t=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29+-+http://b2l.me/xbgjw+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=750&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=750&amp;title=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29&amp;summary=Bu%20makalede%20Java%27n%C4%B1n%20veritaban%C4%B1%20kabiliyetlerinden%20bahsedece%C4%9Fim.%20Java%27n%C4%B1n%20t%C3%BCm%20veritabanlar%C4%B1na%20ula%C5%9Fmak%20i%C3%A7in%20kulland%C4%B1%C4%9F%C4%B1%20ortak%20bir%20API%20vard%C4%B1r.%20JDBC%20%28Java%20Database%20Connectivity%20%29%20API%20uygulamam%C4%B1z%C4%B1%20arka%20taraftaki%20veritaban%C4%B1%20sisteminden%20soyutlamam%C4%B1za%20olanak%20tan%C4%B1r.%20Bunu%20yapabilmek%20i%C3%A7in%20elim&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29&amp;link=http://orhanbalci.net/tr/?p=750" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=750&amp;title=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=750&amp;n=Java+Dersleri+17+-+JDBC+API+%28Veritaban%C4%B1+Ba%C4%9Flant%C4%B1s%C4%B1%29&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=92' rel='bookmark' title='Permanent Link: Java Dersleri 4 &#8211; Erişim Denetleyicileri (Access Modifiers)'>Java Dersleri 4 &#8211; Erişim Denetleyicileri (Access Modifiers)</a> <small> Bu dersimizde Java&#8217;nın metodlar ve sınıflar üzerinde erişim kurallarını...</small></li><li><a href='http://orhanbalci.net/tr/?p=116' rel='bookmark' title='Permanent Link: Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)'>Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)</a> <small>Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/kqzmOg_MpC4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=750</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=750</feedburner:origLink></item>
		<item>
		<title>Swing Programlama : JFileChooser</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/2t1v13K0XWI/</link>
		<comments>http://orhanbalci.net/tr/?p=727#comments</comments>
		<pubDate>Sat, 03 Apr 2010 19:22:59 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[JFileChooser]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=727</guid>
		<description><![CDATA[Bu derste Java swing arayüzlerimizden sistemimizdeki dosya sistemine erişimi sağlayan JFileChooser sınıfının detaylarını anlatmaya çalışacağım. İlk olarak en temel haliyle bir JFileChooser diyalog penceresi nasıl açılır onu görelim : 

 JFileChooser jfc = new JFileChooser();
 jfc.showOpenDialog(null);

Bu kod parçacığı kullanıcının ön tanımlı dizinini gösteren bir dosya diyaloğu açar. Ön tanımlı dizininizi linux ortamında komut satırına &#8220;env&#8221; [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=14' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Temel Kullanım'>Swing Programlama: JTable Temel Kullanım</a> <small>Bu yazımızda en basit haliyle Java UI programlamada sıkça kullandığımız...</small></li><li><a href='http://orhanbalci.net/tr/?p=16' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Hücre Editörleri'>Swing Programlama: JTable Hücre Editörleri</a> <small>Bu yazıda kısaca JTable hücreleri için öntanımlı olan editörün dışında...</small></li><li><a href='http://orhanbalci.net/tr/?p=769' rel='bookmark' title='Permanent Link: Java Dersleri 18 – Network Programlama &#8211; UDP'>Java Dersleri 18 – Network Programlama &#8211; UDP</a> <small>Bu makalede Java&#8217;nın network programlama kabiliyetlerinden bahsedeceğim. UDP protokolü uygulamalar...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Bu derste Java swing arayüzlerimizden sistemimizdeki dosya sistemine erişimi sağlayan JFileChooser sınıfının detaylarını anlatmaya çalışacağım. İlk olarak en temel haliyle bir JFileChooser diyalog penceresi nasıl açılır onu görelim : </p>
<pre class="brush: java">
 JFileChooser jfc = new JFileChooser();
 jfc.showOpenDialog(null);
</pre>
<p>Bu kod parçacığı kullanıcının ön tanımlı dizinini gösteren bir dosya diyaloğu açar. Ön tanımlı dizininizi linux ortamında komut satırına &#8220;env&#8221; komutunu vererek ulaşabilirsiniz. Bu komutu çalıştırdığınızda karşınıza gelen listedeki HOME ortam değişkeni kullanıcının ön tanımlı dizinidir. Örnek görüntümüz şu şekilde olacaktır :<br />
<div id="attachment_730" class="wp-caption aligncenter" style="width: 310px"><a href="http://orhanbalci.net/tr/wp-content/uploads/JFileChooser1.png"><img src="http://orhanbalci.net/tr/wp-content/uploads/JFileChooser1-300x204.png" alt="JFileChooser Öntanımlı Klasör" title="JFileChooser1" width="300" height="204" class="size-medium wp-image-730" /></a><p class="wp-caption-text">JFileChooser Öntanımlı Klasör</p></div><br />
Peki biz dosya diyalogumuzu öntanımlı klasörde değil de başka klasörde açmak istersek ne yapmalıyız? Bunun için JFileChooser sınıfının parametre olarak dosya yolu yada dosya alan diğer yapılandırıcı metodunu kullanmalıyız. Örneğin ben dosya seçme diyaloğumu <strong>&#8220;/home/orhan/Downloads&#8221;</strong> klasöründe açmak istersem şu kod parçasını kullanmam gerekir : </p>
<pre class="brush: java">
JFileChooser jfc = new JFileChooser(&quot;/home/orhan/Downloads&quot;);
 jfc.showOpenDialog(null);
</pre>
<p>Bundan sonra ihtiyacımız olan kullanıcının hangi seçeneği seçtiğini öğrenmek. Kullanıcı herhangi bir dosyayı seçebilir veya işlemi iptal edebilir. Diyalogdan kullanıcı çıktısını şu şekilde alıyoruz : </p>
<pre class="brush: java">
JFileChooser jfc = new JFileChooser(&quot;/home/orhan/Downloads&quot;);
int kullaniciSecimi = jfc.showOpenDialog(null);
</pre>
<p>Kullanıcı seiçimi değişkeninin alabileceği değerler de JFileChooser sınıfında tanımlanmıştır. Bu değerler :</p>
<pre class="brush: java">
JFileChooser.APPROVE_OPTION    //seçim onaylandı
JFileChooser.CANCEL_OPTION       //seçim iptal edildi
JFileChooser.ERROR_OPTION        //işlem sırasında hata oluştu
</pre>
<p>Şimdi kullanıcının seçmiş olduğu dosya ismini JFileChooser sınıfından almayı öğrenelim. </p>
<pre class="brush: java">
if (kullaniciSecimi == JFileChooser.APPROVE_OPTION) {
    System.out.println(jfc.getSelectedFile());
}
</pre>
<p>Kullanıcı tarafından seçilen dosya referansına ulaşmak için <strong>getSelectedFile()</strong> metodunu kullanıyoruz. Eğer kullanıcıya birden fazla dosya seçme imkanı tanımak istiyorsak sırasıyla şu işlemleri yapmalıyız. </p>
<pre class="brush: java">
jfc.setMultiSelectionEnabled(true);
 int kullaniciSecimi = jfc.showOpenDialog(null);
 if (kullaniciSecimi == JFileChooser.APPROVE_OPTION) {
     for(File f : jfc.getSelectedFiles()) {
         System.out.println(f);
     }
}
</pre>
<p>Son olarak seçimimiza filtre eklemeyi öğrenelim. Örneğin sadec zip uzantılı dosyaların seçilebilmesini istiyorsak : </p>
<pre class="brush: java">
 jfc.setFileFilter(new FileFilter() {
            @Override
            public boolean accept(File f) {
                if(f.isDirectory())
                    return true;
                String fileName = f.getName();
                int nokta = fileName.lastIndexOf(&#039;.&#039;);
                String ext = &quot;&quot;;
                if(nokta &gt; 0)
                    ext = fileName.substring(nokta+1);
                return ext.equalsIgnoreCase(&quot;zip&quot;);
            }

            @Override
            public String getDescription() {
                return &quot;ZIP Dosyaları&quot;;
            }
        });
</pre>
<p>Yeni bir filtre eklemek için setFileFilter metodundan faydalandık. Bu filtremizde kullanıcının klasörleri ve zip uzantılı dosyaları seçebilmesine izin verdik. Dosya uzantısını saptayabilmek için String sınıfının lastIndexOf ve substring metodlarından yararlandık. </p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=727&amp;title=Swing+Programlama+%3A+JFileChooser" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=727&amp;title=Swing+Programlama+%3A+JFileChooser" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=727&amp;title=Swing+Programlama+%3A+JFileChooser" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=727&amp;t=Swing+Programlama+%3A+JFileChooser" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=727&amp;t=Swing+Programlama+%3A+JFileChooser" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Swing+Programlama+%3A+JFileChooser+-+http://b2l.me/m7bys+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=727&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=727&amp;title=Swing+Programlama+%3A+JFileChooser&amp;summary=Bu%20derste%20Java%20swing%20aray%C3%BCzlerimizden%20sistemimizdeki%20dosya%20sistemine%20eri%C5%9Fimi%20sa%C4%9Flayan%20JFileChooser%20s%C4%B1n%C4%B1f%C4%B1n%C4%B1n%20detaylar%C4%B1n%C4%B1%20anlatmaya%20%C3%A7al%C4%B1%C5%9Faca%C4%9F%C4%B1m.%20%C4%B0lk%20olarak%20en%20temel%20haliyle%20bir%20JFileChooser%20diyalog%20penceresi%20nas%C4%B1l%20a%C3%A7%C4%B1l%C4%B1r%20onu%20g%C3%B6relim%20%3A%20%0D%0A%5Bjava%5D%0D%0A%20JFileChooser%20jfc%20%3D%20new%20JFileChooser&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Swing+Programlama+%3A+JFileChooser&amp;link=http://orhanbalci.net/tr/?p=727" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=727&amp;title=Swing+Programlama+%3A+JFileChooser" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=727&amp;n=Swing+Programlama+%3A+JFileChooser&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=14' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Temel Kullanım'>Swing Programlama: JTable Temel Kullanım</a> <small>Bu yazımızda en basit haliyle Java UI programlamada sıkça kullandığımız...</small></li><li><a href='http://orhanbalci.net/tr/?p=16' rel='bookmark' title='Permanent Link: Swing Programlama: JTable Hücre Editörleri'>Swing Programlama: JTable Hücre Editörleri</a> <small>Bu yazıda kısaca JTable hücreleri için öntanımlı olan editörün dışında...</small></li><li><a href='http://orhanbalci.net/tr/?p=769' rel='bookmark' title='Permanent Link: Java Dersleri 18 – Network Programlama &#8211; UDP'>Java Dersleri 18 – Network Programlama &#8211; UDP</a> <small>Bu makalede Java&#8217;nın network programlama kabiliyetlerinden bahsedeceğim. UDP protokolü uygulamalar...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/2t1v13K0XWI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=727</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=727</feedburner:origLink></item>
		<item>
		<title>Java Dersleri 16 – Enum Yapısı</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/eAv2vdoFD-0/</link>
		<comments>http://orhanbalci.net/tr/?p=712#comments</comments>
		<pubDate>Thu, 18 Mar 2010 19:50:06 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Enum]]></category>
		<category><![CDATA[Java Ders]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=712</guid>
		<description><![CDATA[Java da enum yapıları 1.5 versiyonuyla birlikte gelmiştir. Bu versiyondan önce enum gereksinimi static final int değişkenlerle giderilmekteydi. Bu yaklaşımın tip güvenliği yoktur yani enumlar herhangi bir int, double vs değerle karşılaştırılabilirler, herhangi bir int değere eklenebilirler. Bunun yanında grup olarak kullandığınız bu int değişkenleri sırayla gezemezsiniz. Oysa ki enumlarda bu aranan bir özelliktir. Bunun [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=30' rel='bookmark' title='Permanent Link: Java Dersleri 2 &#8211; Sınıf Kavramı ve Yapısı (Class Structure)'>Java Dersleri 2 &#8211; Sınıf Kavramı ve Yapısı (Class Structure)</a> <small> JDK kurulumunu ve derleyici kullanımını öğrendikten sonra kod geliştirmeye...</small></li><li><a href='http://orhanbalci.net/tr/?p=103' rel='bookmark' title='Permanent Link: Java Dersleri 5 &#8211; Kalıtım (Inheritance)'>Java Dersleri 5 &#8211; Kalıtım (Inheritance)</a> <small>Bu derste Java&#8217;nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...</small></li><li><a href='http://orhanbalci.net/tr/?p=116' rel='bookmark' title='Permanent Link: Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)'>Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)</a> <small>Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Java da enum yapıları 1.5 versiyonuyla birlikte gelmiştir. Bu versiyondan önce enum gereksinimi static final int değişkenlerle giderilmekteydi. Bu yaklaşımın tip güvenliği yoktur yani enumlar herhangi bir int, double vs değerle karşılaştırılabilirler, herhangi bir int değere eklenebilirler. Bunun yanında grup olarak kullandığınız bu int değişkenleri sırayla gezemezsiniz. Oysa ki enumlarda bu aranan bir özelliktir. Bunun gibi bir kaç yan etkiden dolayı Java&#8217;nın 1.5 versiyonuyla birlikte enum&#8217;lar dile eklendi. Java enumları sınıflara benzemekle birlikte çoğu özelliği kısıtlanmıştır. Öncelikle basit bir Enum tanımı ve kullanımı görelim : </p>
<pre class="brush: java">
 enum AminoAsit{ALANIN,GLUTAMIN,PROLIN,SERIN};
</pre>
<p>Java&#8217;da Enum tanımlamak için<strong> enum</strong> anahtar kelimesi kullanılır. Daha sonra enum elemanları süslü parantez içinde yazılır. Şimdi bu örneği biraz daha geliştirelim ve enum için bir yapıcı (constructor) metod tanımlayalım : </p>
<pre class="brush: java">
 enum AminoAsit {
        ALANIN(&quot;apolar&quot;), GLUTAMIN(&quot;polar&quot;), PROLIN(&quot;nötür&quot;), SERIN(&quot;nötür&quot;);
        public String polarite_;
        AminoAsit() {
        }
        AminoAsit(String polarite) {
            polarite_ = polarite;
        }
    };
</pre>
<p>Örneği biraz değiştirerek bir String alan yapıcı metodumuzu ekledik. Burada dikkat etmemiz gereken kural yapıcı metodumuzun public erişim seviyesinde olmaması. Enum&#8217;ların sınıflardan bir farkı yapıcı metodlarının public erişim seviyesinde olamamasıdır. Enum yapılarının sınıf yapısından bir diğer farkı ise Enum yapılarının herhangi bir sınıftan miras alamamasıdır. Bunun tersine Enum yapıları herhangi bir arayüzü gerçekleyebilirler yani şu kullanım geçerlidir : </p>
<pre class="brush: java">
interface Hidropatik {
        public double getHidropatiKatsayi();
    }
    enum AminoAsit implements Hidropatik {
        ALANIN(&quot;apolar&quot;) {
            @Override
            public double getHidropatiKatsayi() {
                return 1.8;
            }
        },
        GLUTAMIN(&quot;polar&quot;) {
            @Override
            public double getHidropatiKatsayi() {
                return -3.5;
            }
        },
        PROLIN(&quot;nötür&quot;) {
            @Override
            public double getHidropatiKatsayi() {
                return 0.0;
            }
        },
        SERIN(&quot;nötür&quot;) {
            @Override
            public double getHidropatiKatsayi() {
                return -0.8;
            }
        };
        public String polarite_;
        AminoAsit() {
        }
        AminoAsit(String polarite) {
            polarite_ = polarite;
        }
    };
</pre>
<p>Yukarıda tanımladığımız Enum&#8217;u nasıl kullanacağımızı görelim. Aşağıdaki örnekte tanımladığımız Enum&#8217;un tüm elemanlarına ulaşıyoruz: </p>
<pre class="brush: java">
 for (AminoAsit a : AminoAsit.values()) {
            System.out.println(a.name() + &quot; &quot; + a.polarite_ + &quot; &quot; + a.getHidropatiKatsayi());
        }
</pre>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=712&amp;title=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=712&amp;title=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=712&amp;title=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=712&amp;t=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=712&amp;t=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1+-+http://b2l.me/kgvw6+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=712&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=712&amp;title=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1&amp;summary=Java%20da%20enum%20yap%C4%B1lar%C4%B1%201.5%20versiyonuyla%20birlikte%20gelmi%C5%9Ftir.%20Bu%20versiyondan%20%C3%B6nce%20enum%20gereksinimi%20static%20final%20int%20de%C4%9Fi%C5%9Fkenlerle%20giderilmekteydi.%20Bu%20yakla%C5%9F%C4%B1m%C4%B1n%20tip%20g%C3%BCvenli%C4%9Fi%20yoktur%20yani%20enumlar%20herhangi%20bir%20int%2C%20double%20vs%20de%C4%9Ferle%20kar%C5%9F%C4%B1la%C5%9Ft%C4%B1r%C4%B1labilirler%2C%20herhangi%20bir%20int%20de%C4%9Fere%20eklene&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1&amp;link=http://orhanbalci.net/tr/?p=712" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=712&amp;title=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=712&amp;n=Java+Dersleri+16+%E2%80%93+Enum+Yap%C4%B1s%C4%B1&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=30' rel='bookmark' title='Permanent Link: Java Dersleri 2 &#8211; Sınıf Kavramı ve Yapısı (Class Structure)'>Java Dersleri 2 &#8211; Sınıf Kavramı ve Yapısı (Class Structure)</a> <small> JDK kurulumunu ve derleyici kullanımını öğrendikten sonra kod geliştirmeye...</small></li><li><a href='http://orhanbalci.net/tr/?p=103' rel='bookmark' title='Permanent Link: Java Dersleri 5 &#8211; Kalıtım (Inheritance)'>Java Dersleri 5 &#8211; Kalıtım (Inheritance)</a> <small>Bu derste Java&#8217;nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...</small></li><li><a href='http://orhanbalci.net/tr/?p=116' rel='bookmark' title='Permanent Link: Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)'>Java Dersleri 6 &#8211; Arayüzler ve Gerçeklenmesi (Interface and Implementation)</a> <small>Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/eAv2vdoFD-0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=712</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=712</feedburner:origLink></item>
		<item>
		<title>Java Dersleri 15 – Koleksiyon API (Collection API) Map</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/ZW5D2WLYD0k/</link>
		<comments>http://orhanbalci.net/tr/?p=696#comments</comments>
		<pubDate>Wed, 17 Mar 2010 15:31:35 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[HashMap]]></category>
		<category><![CDATA[Java Ders]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=696</guid>
		<description><![CDATA[Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki fonksiyonların yazılım tarafında karşılığı olan map veri yapıları yazılım mimarisinde sıkça kullanılır. Örneğin yazılımımızda bulunan nesnelere birer kimlik numarası vererek bu numara ile nesne arasında anahtar-değer ilişkisi kurabiliriz. Böylelikle istediğimiz nesneye kimlik numarası aracılığıyla rahatlıkla erişebiliriz. Java Map arayüzü herhangi bir sıralama kısıtı getirmez. Map&#8217;e [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=645' rel='bookmark' title='Permanent Link: Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler'>Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler</a> <small>Koleksiyonlar yazılımımızda verinin hafızada nasıl tutulacağına karar veren soyut veri...</small></li><li><a href='http://orhanbalci.net/tr/?p=663' rel='bookmark' title='Permanent Link: Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)'>Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)</a> <small>Koleksiyon API&#8217;sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki fonksiyonların yazılım tarafında karşılığı olan map veri yapıları yazılım mimarisinde sıkça kullanılır. Örneğin yazılımımızda bulunan nesnelere birer kimlik numarası vererek bu numara ile nesne arasında anahtar-değer ilişkisi kurabiliriz. Böylelikle istediğimiz nesneye kimlik numarası aracılığıyla rahatlıkla erişebiliriz. Java Map arayüzü herhangi bir sıralama kısıtı getirmez. Map&#8217;e eklenen anahtar-değer ikililerinin eklendiği sırada kalacağı garanti değildir. Map arayüzünü gerçekleyen sınıflar arasında en bilineni HashMap sınıfıdır. HashMap verilen anahtardan hash fonksiyonu yardımıyla bir array indeksi oluşturur. Verilen değer de bu array indeksindeki belleğe yerleştirilir. Hash fonksiyonları çok temel matematiksel işlemler kullandıklarından hızlıdırlar. Dolayısıyla HashMap&#8217;de verilere erişim sabit zamanda olur. HashMap performansı için önemli olan iki parametre ilk kapasite ve yük faktörüdür. Varsayılan olarak ilk kapasite 11&#8242;dir. Yük faktörü HashMap koleksiyonumuzun herhangi bir anda maksimum doluluk oranını ölçer. Bu değer varsayılan olarak %75 dir. HashMap&#8217;de doluluk oranı bu değerin üzerine çıktığında kapasite arttırımına gidilerek değerler tekrar hash&#8217;lenir.  Şimdi bir örnekle Map veri yapısına eleman eklemeyi ve geri almayı görelim : </p>
<pre class="brush: java">
package net.orhanbalci.collections;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapExample {

    public static void main(String[] args) {
        Map&lt;Integer,String&gt; m = new HashMap&lt;Integer,String&gt;();

        for (int i = 0; i &lt; 10; i++) {
            m.put(i, String.valueOf(i) + &quot; değer&quot;);
        }

        Set&lt;Integer&gt; ks = m.keySet();

        Iterator&lt;Integer&gt; i =  ks.iterator();

        while (i.hasNext()) {
            Integer key = i.next();
            System.out.print(key + &quot; &quot;);
            System.out.println(m.get(key));
        }
    }
}
</pre>
<p>Örneğimizde 11. satırda yeni bir HashMap nesnesi tanımlıyoruz. Java&#8217;nın generics özelliğini (şablon sınıflar) kullanılarak  anahtarların veri tipini Integer değerlerin veri tipini ise String olarak belirttik. 14. satırda Map arayüzünün put() metodunu kullanarak HashMap koleksiyonumuza yeni eleman ekliyoruz.  24. satırda ise get() metodu yardımıyla HashMap koleksiyonumuzdan anahtar yardımıyla değerimize ulaşıyoruz.</p>
<p>Yukarıda bahsettiğimiz ilk kapasitenin performansa olan etkisini başka bir örnekte görelim : </p>
<pre class="brush: java">
        Map&lt;Integer,String&gt; m2 = new HashMap&lt;Integer,String&gt;(10);
        Map&lt;Integer,String&gt; m3 = new HashMap&lt;Integer,String&gt;(100);

        long time1 = System.currentTimeMillis();
        for (int k = 0; k &lt; 10000; k++) {
            m2.put(k, String.valueOf(k) + &quot; değer&quot;);
        }
        long time2 = System.currentTimeMillis();
        System.out.println(String.valueOf(time2-time1) + &quot; milisaniye&quot;);

        time1 = System.currentTimeMillis();
        for (int k = 0; k &lt; 10000; k++) {
            m3.put(k, String.valueOf(k) + &quot; değer&quot;);
        }
        time2 = System.currentTimeMillis();
        System.out.println(String.valueOf(time2-time1) + &quot; milisaniye&quot;);
</pre>
<p>Bu örneğimizde ise iki adet HashMap nesnesi oluşturuken ilk kapasiteyi yapılandırıcı metoda parametre olarak veriyoruz. m2 koleksiyonumuzun ilk kapasitesi 10 iken diğerinin ilk kapasitesi 100 dür. Her iki koleksiyona arka arkaya 10000 anahtar-değer ikilisi ekleyip performansı ölçtüğümüzde ilk kapasitesi 10 olan koleksiyona ekleme işlemi 46-47 milisaniye sürerken ilk kapasitesi 100 olan koleksiyona ekleme işlemi 19-20 milisaniye sürmekte. Görüldüğü üzere kapasite artırımına gitmek zaman kaybına neden olmaktadır.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=696&amp;title=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=696&amp;title=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=696&amp;title=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=696&amp;t=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=696&amp;t=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map+-+http://b2l.me/kcnrk+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=696&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=696&amp;title=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map&amp;summary=Map%20aray%C3%BCz%C3%BC%20anahtar-de%C4%9Fer%20ikililerini%20bir%20arada%20tutmak%20i%C3%A7in%20tasarlanm%C4%B1%C5%9Ft%C4%B1r.%20Matemetikteki%20fonksiyonlar%C4%B1n%20yaz%C4%B1l%C4%B1m%20taraf%C4%B1nda%20kar%C5%9F%C4%B1l%C4%B1%C4%9F%C4%B1%20olan%20map%20veri%20yap%C4%B1lar%C4%B1%20yaz%C4%B1l%C4%B1m%20mimarisinde%20s%C4%B1k%C3%A7a%20kullan%C4%B1l%C4%B1r.%20%C3%96rne%C4%9Fin%20yaz%C4%B1l%C4%B1m%C4%B1m%C4%B1zda%20bulunan%20nesnelere%20birer%20kimlik%20numaras%C4%B1%20vererek%20bu%20nu&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map&amp;link=http://orhanbalci.net/tr/?p=696" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=696&amp;title=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=696&amp;n=Java+Dersleri+15+%E2%80%93+Koleksiyon+API+%28Collection+API%29+Map&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=645' rel='bookmark' title='Permanent Link: Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler'>Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler</a> <small>Koleksiyonlar yazılımımızda verinin hafızada nasıl tutulacağına karar veren soyut veri...</small></li><li><a href='http://orhanbalci.net/tr/?p=663' rel='bookmark' title='Permanent Link: Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)'>Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)</a> <small>Koleksiyon API&#8217;sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/ZW5D2WLYD0k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=696</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=696</feedburner:origLink></item>
		<item>
		<title>Ulusal Bilgisayar Olimpiyadı 2009 – Soru 36</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/qNmFwtmQo2g/</link>
		<comments>http://orhanbalci.net/tr/?p=685#comments</comments>
		<pubDate>Tue, 09 Mar 2010 18:35:34 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Olimpiyat Soru Çözümleri]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Bilgisayar Olimpiyad Soruları]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=685</guid>
		<description><![CDATA[Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun.
‘i3(3(



İlgili Yazılar:Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 38 Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. ‘8(i3(>))’...Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 39 Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. Aşağıdakilerden...Ulusal Bilgisayar Olimpiyadı 2009 – Soru 37 Soru metni için öncelikle 40. soruda verdiğimiz [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=496' rel='bookmark' title='Permanent Link: Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 38'>Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 38</a> <small>Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. ‘8(i3(>))’...</small></li><li><a href='http://orhanbalci.net/tr/?p=481' rel='bookmark' title='Permanent Link: Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 39'>Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 39</a> <small>Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. Aşağıdakilerden...</small></li><li><a href='http://orhanbalci.net/tr/?p=516' rel='bookmark' title='Permanent Link: Ulusal Bilgisayar Olimpiyadı 2009 – Soru 37'>Ulusal Bilgisayar Olimpiyadı 2009 – Soru 37</a> <small>Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. ‘i3(3([i]>))’...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Soru metni için öncelikle <a href="http://orhanbalci.net/tr/?p=470">40. soruda</a> verdiğimiz açıklamaları okuyun.<br />
‘i3(3(<)i)’ komutu kaç numaralı şekli çizer?<br />
A) (1)<br />
B) (6)<br />
C) (9)<br />
D) (10)<br />
E) (14)</p>
<p>CEVAP: Nispeten kolay bir soru. Komutu incelersek ilk olarak kuzeye ilerleyip daha sonra 3 kere 135 derece sola dönüp ilerlemeliyiz. <div id="attachment_689" class="wp-caption aligncenter" style="width: 192px"><a href="http://orhanbalci.net/tr/wp-content/uploads/soru-36.png"><img src="http://orhanbalci.net/tr/wp-content/uploads/soru-36.png" alt="Soru 36" title="Soru 36" width="182" height="181" class="size-full wp-image-689" /></a><p class="wp-caption-text">Soru 36</p></div> Yukarıdaki şekilden takip edersek önce kuzeye yani 1&#8242;den 2&#8242;ye. Daha sonra sola 135 derece dönüp ileriye. Yani 2&#8242;den 3&#8242;e. Yine 135 derece sola dönüş ve ilerleme : 3&#8242;den 1&#8242;e. Son kez 135 derece sola ve ileri : 1&#8242;den 4&#8242;e. Doğru cevap C) (9)</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=685&amp;title=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=685&amp;title=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=685&amp;title=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=685&amp;t=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=685&amp;t=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36+-+http://b2l.me/jjaue+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=685&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=685&amp;title=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36&amp;summary=Soru%20metni%20i%C3%A7in%20%C3%B6ncelikle%2040.%20soruda%20verdi%C4%9Fimiz%20a%C3%A7%C4%B1klamalar%C4%B1%20okuyun.%0D%0A%E2%80%98i3%283%28&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36&amp;link=http://orhanbalci.net/tr/?p=685" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=685&amp;title=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=685&amp;n=Ulusal+Bilgisayar+Olimpiyad%C4%B1+2009+%E2%80%93+Soru+36&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=496' rel='bookmark' title='Permanent Link: Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 38'>Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 38</a> <small>Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. ‘8(i3(>))’...</small></li><li><a href='http://orhanbalci.net/tr/?p=481' rel='bookmark' title='Permanent Link: Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 39'>Ulusal Bilgisayar Olimpiyadı 2009 &#8211; Soru 39</a> <small>Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. Aşağıdakilerden...</small></li><li><a href='http://orhanbalci.net/tr/?p=516' rel='bookmark' title='Permanent Link: Ulusal Bilgisayar Olimpiyadı 2009 – Soru 37'>Ulusal Bilgisayar Olimpiyadı 2009 – Soru 37</a> <small>Soru metni için öncelikle 40. soruda verdiğimiz açıklamaları okuyun. ‘i3(3([i]>))’...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/qNmFwtmQo2g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=685</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=685</feedburner:origLink></item>
		<item>
		<title>Java Dersleri 14 – Koleksiyon API (Collection API) Kuyruklar (Queue)</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/MI24KmhLSAQ/</link>
		<comments>http://orhanbalci.net/tr/?p=663#comments</comments>
		<pubDate>Fri, 19 Feb 2010 11:49:36 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[Java Ders]]></category>
		<category><![CDATA[Kuyruk]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[Veri Yapısı]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=663</guid>
		<description><![CDATA[Koleksiyon API&#8217;sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel olarak listeye benzemekle birlikte listelerden farkı elemanlarını farklı bir şekilde sıralamasıdır. Kuyruk her zaman olmamakla birlike elemanlarını FIFO (ilk giren ilk çıkar) mantığıyla dizerler. Bunun farklı olduğu durumlar da mevcuttur. Örneğin PriorityQueue (Öncelik Kuyruğu) içindeki elemanları neye göre karşılaştıracağını kullanıcıya sorar. Eğer kullanıcı tarafından bir [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=645' rel='bookmark' title='Permanent Link: Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler'>Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler</a> <small>Koleksiyonlar yazılımımızda verinin hafızada nasıl tutulacağına karar veren soyut veri...</small></li><li><a href='http://orhanbalci.net/tr/?p=696' rel='bookmark' title='Permanent Link: Java Dersleri 15 – Koleksiyon API (Collection API) Map'>Java Dersleri 15 – Koleksiyon API (Collection API) Map</a> <small>Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Koleksiyon API&#8217;sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel olarak listeye benzemekle birlikte listelerden farkı elemanlarını farklı bir şekilde sıralamasıdır. Kuyruk her zaman olmamakla birlike elemanlarını FIFO (ilk giren ilk çıkar) mantığıyla dizerler. Bunun farklı olduğu durumlar da mevcuttur. Örneğin PriorityQueue (Öncelik Kuyruğu) içindeki elemanları neye göre karşılaştıracağını kullanıcıya sorar. Eğer kullanıcı tarafından bir karşılaştırma yöntemi belirtilmezse doğal sıralama yöntemlerini kullanır. Örneklerle kuyruk arayüzünü tanıyalım : </p>
<pre class="brush: java">
        Queue&lt;String&gt; q = new LinkedList&lt;String&gt;();
        for (int i = 0; i &lt; 10; i++) {
            q.offer(String.valueOf(i));
        }
        for (int i = 0; i &lt; 10; i++) {
            System.out.println(q.poll());
        }
</pre>
<p>Bu örnekte bir kuyruk yapısına String olarak 0&#8242;dan 10&#8242;a kadar olan sayılar önce eklenmiş daha sonra eklendiği sırada çıkarılmıştır. Kuyruğa eleman eklemek için <strong>offer()</strong> metodunu kullanıyoruz. Aynı iş için <strong>add()</strong> metodu da mevcuttur. Farkları ise ekleme işlemi başarısız olduğu zaman <strong>offer()</strong> metodu null değeri dönerken <strong>add()</strong> metodu istisnai durum fırlatır. Kuyruğun başındaki elemanın değerini alarak kuyruktan kaldırmak için ise <strong>poll()</strong> metodunu kullanıyoruz. <strong>offer()</strong> metodunda olduğu gibi <strong>poll()</strong> metodu için de farklı bir versiyon olan <strong>remove()</strong> metodu bulunur. Farkları yine başarısız olma durumundaki davranışlarıdır. Kuyruk veri yapısından sıradaki elemana ulaşmak için <strong>peek()</strong> metodu kullanılır. Bu metod sıradaki elemanı kullanıcıya verir fakat kuyruktan silmez. Şimdi de FIFO&#8217;dan farklı bir sıralama yöntemiyle çalışan kuyruk örneği yazalım. Yazacağımız örnek kelimeleri içerisindeki sesli harf sayısına göre kuyrukta tutsun. Yani içinde daha fazla sesli harf olan kelime kuyrukta önde yeralsın : </p>
<pre class="brush: java">
        PriorityQueue&lt;String&gt; pq = new PriorityQueue(15, new Comparator() {
            public int compare(Object o1, Object o2) {
                if ( o1 instanceof String &amp;&amp; o2 instanceof String)
                {
                    String s1 = (String) o1;
                    String s2 = (String) o2;
                    int vowels1 = s1.replaceAll(&quot;[^aeıioöuü]&quot;, &quot;&quot;).length();
                    int vowels2 = s2.replaceAll(&quot;[^aeıioöuü]&quot;, &quot;&quot;).length();
                    return vowels2 - vowels1;
                }
                return 0;
            }
        });
</pre>
<p>Örneğimizde kullanıcı tarafından tanımlanmı isimsiz bir Comparator nesnesini kullanarak bir PriorityQueue oluşturuyoruz. Comparator nesnemiz iki String&#8217;i içindeki sesli harf sayısına göre karşılaştırmaya yarıyor. Sesli harf sayısını bulmak için String sınıfının <strong>replaceAll()</strong> metodunu kullanıyoruz. Bu metod verilen düzenli ifadeyi, ikinci parametresiyle değiştirir. Şimdi oluşturduğumuz PriorityQueue nesnesine elemanlar ekleyelim ve sonucu görelim : </p>
<pre class="brush: java">
        pq.offer(&quot;iğne&quot;);
        pq.offer(&quot;iplik&quot;);
        pq.offer(&quot;bilgisayar&quot;);
        pq.offer(&quot;masa&quot;);
        pq.offer(&quot;sandalye&quot;);

        while(!pq.isEmpty())
        {
            System.out.println(pq.remove());
        }
</pre>
<p>En çok sesli harf <strong>&#8220;bilgisayar&#8221;</strong> kelimesinde olduğu için kuyruğun başında yer alacaktır. Daha sonra sırasıyla <strong>&#8220;sandalye&#8221;</strong>, <strong>&#8220;masa&#8221;</strong> , <strong>&#8220;iğne&#8221;</strong> , <strong>&#8220;iplik&#8221;</strong> kelimeleri gelecektir.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=663&amp;title=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=663&amp;title=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=663&amp;title=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=663&amp;t=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=663&amp;t=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29+-+http://b2l.me/gsrjc+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=663&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=663&amp;title=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29&amp;summary=Koleksiyon%20API%27sine%20ait%20di%C4%9Fer%20bir%20aray%C3%BCz%20kuyruk%20%28queue%29%20aray%C3%BCz%C3%BCd%C3%BCr.%20Temel%20olarak%20listeye%20benzemekle%20birlikte%20listelerden%20fark%C4%B1%20elemanlar%C4%B1n%C4%B1%20farkl%C4%B1%20bir%20%C5%9Fekilde%20s%C4%B1ralamas%C4%B1d%C4%B1r.%20Kuyruk%20her%20zaman%20olmamakla%20birlike%20elemanlar%C4%B1n%C4%B1%20FIFO%20%28ilk%20giren%20ilk%20%C3%A7%C4%B1kar%29%20mant%C4%B1%C4%9F%C4%B1yla%20dizerler.%20Bunun%20fark&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29&amp;link=http://orhanbalci.net/tr/?p=663" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=663&amp;title=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=663&amp;n=Java+Dersleri+14+-+Koleksiyon+API+%28Collection+API%29+Kuyruklar+%28Queue%29&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=645' rel='bookmark' title='Permanent Link: Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler'>Java Dersleri 13 &#8211; Koleksiyon API (Collection API) Listeler</a> <small>Koleksiyonlar yazılımımızda verinin hafızada nasıl tutulacağına karar veren soyut veri...</small></li><li><a href='http://orhanbalci.net/tr/?p=696' rel='bookmark' title='Permanent Link: Java Dersleri 15 – Koleksiyon API (Collection API) Map'>Java Dersleri 15 – Koleksiyon API (Collection API) Map</a> <small>Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/MI24KmhLSAQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=663</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=663</feedburner:origLink></item>
		<item>
		<title>Java Dersleri 13 – Koleksiyon API (Collection API) Listeler</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/N2rO09g9x8s/</link>
		<comments>http://orhanbalci.net/tr/?p=645#comments</comments>
		<pubDate>Wed, 17 Feb 2010 18:39:33 +0000</pubDate>
		<dc:creator>Orhan Balci</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[Java Ders]]></category>
		<category><![CDATA[Liste]]></category>
		<category><![CDATA[Veri Yapısı]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=645</guid>
		<description><![CDATA[Koleksiyonlar yazılımımızda verinin hafızada nasıl tutulacağına karar veren soyut veri yapılarıdır. Koleksiyon sınıfları verileri sıralaması, tekil veri taşıyıp taşımaması gibi özelliklerine göre birbirinden ayrılır. Yapacağımız işlemlerin sıklığına göre bu kapsayıcı (container) koleksiyon sınıflarından seçim yapmamız gerekir. Bu seçim yazılım performansı için hayati önem taşımaktadır. Örneğin elimizdeki veriye sıralı (sequential) veya rastgele (random) erişip erişmeyeceğimiz önemlidir. [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=663' rel='bookmark' title='Permanent Link: Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)'>Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)</a> <small>Koleksiyon API&#8217;sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel...</small></li><li><a href='http://orhanbalci.net/tr/?p=696' rel='bookmark' title='Permanent Link: Java Dersleri 15 – Koleksiyon API (Collection API) Map'>Java Dersleri 15 – Koleksiyon API (Collection API) Map</a> <small>Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" />Koleksiyonlar yazılımımızda verinin hafızada nasıl tutulacağına karar veren soyut veri yapılarıdır. Koleksiyon sınıfları verileri sıralaması, tekil veri taşıyıp taşımaması gibi özelliklerine göre birbirinden ayrılır. Yapacağımız işlemlerin sıklığına göre bu kapsayıcı (container) koleksiyon sınıflarından seçim yapmamız gerekir. Bu seçim yazılım performansı için hayati önem taşımaktadır. Örneğin elimizdeki veriye sıralı (sequential) veya rastgele (random) erişip erişmeyeceğimiz önemlidir. Bu da bizim kapsayıcı sınıf seçimimizi etkileyecektir. İkinci bir örnek olarak elimizdeki verinin sürekli olarak sıralı tutulmasını arzu ediyor olabiliriz. Bu da seçimimize direkt olarak yansıyacaktır.<br />
<span id="more-645"></span><br />
En çok bilinen koleksiyon API arayüzü List arayüzüdür. Listeler verilerimizi belirli bir sıraya göre hafızada tutan kapsayıcı sınıflardır. Sizlere liste arayüzünün metodlarını teker teker açıklamak yerine kullanımına örnekler vererek konuyu hafızanıza yerleştirmek istiyorum. İlk olarak listeye eleman eklemeyi görelim : </p>
<pre class="brush: java">
            List&lt;String&gt; al = new ArrayList&lt;String&gt;();
            List&lt;String&gt; al2 = new ArrayList&lt;String&gt;();
            al.add(&quot;ahmet&quot;);
            al.add(0,&quot;mehmet&quot;);
            al.add(0,&quot;ali&quot;);
            al.add(0,&quot;veli&quot;);
            System.out.println(al);
            System.out.println(al2);
            al2.addAll(al);
            System.out.println(al2);
</pre>
<p>Örneğimizde iki adet <strong>ArrayList</strong> kapsayıcı nesnesi oluşturup bunlara çeşitli metodlar vasıtasıyla eleman ekleyerek içeriklerini yazdırdık. İlk metodumuz <strong>add()</strong>, listemizin sonuna eleman eklemeye yarar. Yine <strong>add </strong> metodumuzun overloadu olarak listenin sonuna değil istediğimiz indeksine eleman eklemeye yarayan bir metodumuz var. Listemize bir diğer listeden çoklu eleman eklemek için ise <strong>addAll</strong> metodunu kullanıyoruz.</p>
<p>İkinci olarak listeden eleman silmeye bakalım :</p>
<pre class="brush: java">
        al.remove(&quot;ali&quot;);
        System.out.println(&quot;Liste 1 :&quot; + al);
        al2.remove(0);
        System.out.println(&quot;Liste 2 :&quot; + al2);
        al2.removeAll(al);
        System.out.println(&quot;Liste 2 :&quot; + al2);
</pre>
<p>Listeden eleman silmek için <strong>remove()</strong> metodunu kullanıyoruz. <strong>remove()</strong> metodunun iki overload&#8217;u bulunuyor. Birincisi parametre olarak listeden silmek istediğimiz elemanın kendisini alırken, ikincisi elemanın listedeki yerini (indeks) alır.  Toplu silme işlemi için <strong>removeAll()</strong> metodunu kullanabiliriz. Bu metod parametre olarak verilen liste içindeki elemanları silme yapılan listeden çıkarır. Yukarıdaki örnekte al2 listesinden al listesinde bulunan bütün elemanlar çıkarılmıştır. Bu işlem sonunda al listesinde al fark al2 kalmış olur. Az kullanılan ama yararlı bir metod olan <strong>retainAll()</strong> kullanımını örnekle görelim : </p>
<pre class="brush: java">
        //retainAll() kullanımı
        List&lt;String&gt; liste1 = new ArrayList&lt;String&gt;();
        List&lt;String&gt; liste2 = new ArrayList&lt;String&gt;();

        for(int i = 0; i &lt;= 10; i++)
        {
            liste1.add(String.valueOf(i));
        }
        System.out.println(&quot;Liste 1 :&quot; + liste1);
        for(int i = 0; i &lt;= 15; i++)
        {
            liste2.add(String.valueOf(i));
        }
        System.out.println(&quot;Liste 2 :&quot; + liste2);

        liste2.retainAll(liste1);
        System.out.println(&quot;Liste 2 :&quot; + liste2);
</pre>
<p>Burada <strong>liste1</strong> 10&#8242;a kadar olan sayılarla doldurulmuş, <strong>liste2</strong> ise 15&#8242;e kadar olan sayılarla doldurulmuştur. <strong>liste2&#8242;</strong> ye <strong>retainAll()</strong> komutu verilmiştir. Bu metod <strong>liste2</strong> içerisinde olup da <strong>liste1</strong>&#8216;de olmayan tüm elemanları <strong>liste2</strong>&#8216;den siler. Yani <strong>liste2</strong> içerisinde sadece <strong>liste2</strong> ile <strong>liste1</strong>&#8216;in kesişimi kalır. Örneğin çıktısı : </p>
<pre class="brush: java">
Liste 1 :[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Liste 2 :[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Liste 2 :[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
</pre>
<p>şeklindedir.</p>
<p>Listenin herhangi bir yerindeki (indeks) elemana ulaşmak için <strong>get()</strong> metodunu kullanıyoruz. Listenin herhangi yerindeki (indeks) bir elemanı değiştirmek için ise <strong>set()</strong> metoduna başvuruyoruz. Bu metodların kullanımı görelim :</p>
<pre class="brush: java">
        System.out.println(liste2.get(3));
        liste2.set(3, &quot;99&quot;);
        System.out.println(liste2.get(3));
</pre>
<p>Bu örnekte <strong>liste2</strong> listesinin 4. (listelerde indeksler 0&#8242;dan başlar ) elemanı ekrana yazdırılıyor. Daha sonra 4. eleman 99 olarak değiştirilip tekrar ekrana yazdırılıyor.<br />
Temel operasyonları öğrendiğimize göre elimizdeki liste üzerinden tüm elemanlara teker teker ulaşmanın (iteration) yöntemlerine bakabiliriz. Bunun için çeşitli yöntemler mevcut. İlk olarak klasik for döngüsüyle erişimi görelim : </p>
<pre class="brush: java">
        for (int i = 0; i &lt; liste2.size(); i++) {
            String string = liste2.get(i);
            System.out.print(string);
        }
</pre>
<p>Burada for döngümüzü listenin uzunluğu <strong>(size())</strong> ile kısıtlayarak elemanlara tek tek erişiyoruz. Gelişmiş for döngüsü ile erişim ise şu şekilde: </p>
<pre class="brush: java">
        for (String string : liste2) {
            System.out.println(string);
        }
</pre>
<p>Son olarak ise <strong>Iterator</strong> yardımı ile elemanlara erişim yöntemidir. Bunu da örnekle görelim :</p>
<pre class="brush: java">
        ListIterator&lt;String&gt; li = liste2.listIterator();
        while (li.hasNext()) {
            String string = li.next();
            System.out.print(string);
        }
</pre>
<p>Burada <strong>Iterator</strong> kullanmanın avantajı listede ileri geri hareket edebiliyor olmamız. Ayrıca listede hareket ederken listeyi değiştirmemiz de mümkün. Bu üç yöntem içinde elemanlara ulaşma hızı olarak en hızlı olanı ilk gösterdiğimiz klasik for döngüsüdür. Diğer iki yöntem ise yaklaşık olarak birbirine eşit hızlarda çalışmaktadır. Örneğin 150000 elemanlı bir dizideki elemanlara tek tek erişmek klasik for döngüsü ile yaklaşık 3 milisaniye sürerken, geliştirilmiş for döngüsü ve Iterator yardımıyla erişmek ise yaklaşık 6 milisaniye sürer. Liste arayüzünün anlattıklarım dışında da birkaç metodu bulunuyor fakat bunlara değinmeyeceğim.</p>
<p>Java&#8217;da Liste arayüzünün iki ayrı gerçeklemesi vardır. bunlardan ilki yukarıda kullandığımız ArrayList&#8217;dir. İkincisi ise LinkedList. Bu iki gerçekleme de birbirlerine değişik konularda avantaj sağlarlar. Örneğin ArrayList rastgele erişim konusunda LinkedList&#8217;e göre çok avantajlı iken. LinkedList ise araya eleman sokmakta ArrayList&#8217;e göre çok üstündür. Bu farkları ufak kod parçaları yazarak deneyip görebilirsiniz.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=645&amp;title=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=645&amp;title=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=645&amp;title=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=645&amp;t=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=645&amp;t=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler+-+http://b2l.me/gmu4h+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=645&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=645&amp;title=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler&amp;summary=Koleksiyonlar%20yaz%C4%B1l%C4%B1m%C4%B1m%C4%B1zda%20verinin%20haf%C4%B1zada%20nas%C4%B1l%20tutulaca%C4%9F%C4%B1na%20karar%20veren%20soyut%20veri%20yap%C4%B1lar%C4%B1d%C4%B1r.%20Koleksiyon%20s%C4%B1n%C4%B1flar%C4%B1%20verileri%20s%C4%B1ralamas%C4%B1%2C%20tekil%20veri%20ta%C5%9F%C4%B1y%C4%B1p%20ta%C5%9F%C4%B1mamas%C4%B1%20gibi%20%C3%B6zelliklerine%20g%C3%B6re%20birbirinden%20ayr%C4%B1l%C4%B1r.%20Yapaca%C4%9F%C4%B1m%C4%B1z%20i%C5%9Flemlerin%20s%C4%B1kl%C4%B1%C4%9F%C4%B1na%20g%C3%B6re%20bu%20kapsay%C4&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler&amp;link=http://orhanbalci.net/tr/?p=645" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=645&amp;title=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=645&amp;n=Java+Dersleri+13+-+Koleksiyon+API+%28Collection+API%29+Listeler&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=663' rel='bookmark' title='Permanent Link: Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)'>Java Dersleri 14 &#8211; Koleksiyon API (Collection API) Kuyruklar (Queue)</a> <small>Koleksiyon API&#8217;sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel...</small></li><li><a href='http://orhanbalci.net/tr/?p=696' rel='bookmark' title='Permanent Link: Java Dersleri 15 – Koleksiyon API (Collection API) Map'>Java Dersleri 15 – Koleksiyon API (Collection API) Map</a> <small>Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki...</small></li><li><a href='http://orhanbalci.net/tr/?p=367' rel='bookmark' title='Permanent Link: Java Dersleri 12 &#8211; String İşlemleri'>Java Dersleri 12 &#8211; String İşlemleri</a> <small>Bu dersimizde Java&#8217;nın ve diğer dillerin en temel elemanlarından olan...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/N2rO09g9x8s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=645</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=645</feedburner:origLink></item>
		<item>
		<title>Python Deneyimleri 3</title>
		<link>http://feedproxy.google.com/~r/orhanbalci/~3/b89inspy4h8/</link>
		<comments>http://orhanbalci.net/tr/?p=639#comments</comments>
		<pubDate>Wed, 17 Feb 2010 09:05:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Yazilim]]></category>
		<category><![CDATA[Image]]></category>

		<guid isPermaLink="false">http://orhanbalci.net/tr/?p=639</guid>
		<description><![CDATA[

Python&#8217;da resim işlemek için standart bir kütüphane yok. Harici kütüphane olarak PIL kullanılabilir
Herhangi bir resim dosyasını açmak için Image.open() kullanılıyor. Teker teker piksellere getpixel() fonksiyonuyla ulaşılabiliyor
Herhangi bir ASCII kodu karaktere çevirmek için chr() fonksiyonu kullanılıyor
Herhangi bir listedeki değerleri tek string nesnesinde birleştirmek için sıkça join() fonksiyonu kullanılıyor. Örneğin

    mesaj=[78, 110, 66, 101, [...]


İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=620' rel='bookmark' title='Permanent Link: Python Deneyimleri 2'>Python Deneyimleri 2</a> <small> Fonksiyon tanımlamak için def anahtar kelimesini kullanıyoruz. Fonksiyon çağrılmadan...</small></li><li><a href='http://orhanbalci.net/tr/?p=593' rel='bookmark' title='Permanent Link: Python Deneyimleri 1'>Python Deneyimleri 1</a> <small> http://www.istihza.com buradaki python2.x derslerini takip ediyorum from &#8230; import...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p id="top" /><div id="attachment_605" class="wp-caption aligncenter" style="width: 480px"><a href="http://orhanbalci.net/tr/wp-content/uploads/python_logo.png"><img src="http://orhanbalci.net/tr/wp-content/uploads/python_logo.png" alt="Python Logo" title="python_logo" width="470" height="180" class="size-full wp-image-605" /></a><p class="wp-caption-text">Python Logo</p></div></p>
<ol>
<li>Python&#8217;da resim işlemek için standart bir kütüphane yok. Harici kütüphane olarak <a href="http://effbot.org/zone/pil-index.htm">PIL</a> kullanılabilir</li>
<li>Herhangi bir resim dosyasını açmak için <strong>Image.open()</strong> kullanılıyor. Teker teker piksellere <strong>getpixel()</strong> fonksiyonuyla ulaşılabiliyor</li>
<li>Herhangi bir ASCII kodu karaktere çevirmek için <strong>chr()</strong> fonksiyonu kullanılıyor</li>
<li>Herhangi bir listedeki değerleri tek string nesnesinde birleştirmek için sıkça <strong>join()</strong> fonksiyonu kullanılıyor. Örneğin
<pre class="brush: python">
    mesaj=[78, 110, 66, 101, 143, 114, 105, 116, 71]
    print &#039;(&#039;,&#039;&#039;.join([chr(k) for k in mesaj]),&#039;)&#039;
</pre>
</li>
<li>Resim dosyası üzerine çizmek için ImageDraw modülü kullanılıyor. Örnek :
<pre class="brush: python">
    im = Image.new(&#039;1&#039;, (500,500), 1)
    draw = ImageDraw.Draw(im)
    draw.line(listOfXYTuples)
</pre>
</li>
<li>Dosya silmek için os modülünün <strong>remove()</strong> fonksiyonu kullanılıyor. Örneğin :
<pre class="brush: python">
    os.remove(&#039;sample.png&#039;)
</pre>
</li>
<li>QString&#8217;den python stringine dönüşümü str fonksiyonu ile yapiyoruz</li>
<li>PyQt denemeleri yapmak için QtDesigner entegrasyonu olan ERIC IDE&#8217;sini denedim ama NetBeans çok daha rahat bu konuda. </li>
</ol>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://orhanbalci.net/tr/?p=639&amp;title=Python+Deneyimleri+3" rel="nofollow" title="Bunu del.icio.us 'da paylaşın">Bunu del.icio.us 'da paylaşın</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://orhanbalci.net/tr/?p=639&amp;title=Python+Deneyimleri+3" rel="nofollow" title="Bunu Digg'leyin!">Bunu Digg'leyin!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://orhanbalci.net/tr/?p=639&amp;title=Python+Deneyimleri+3" rel="nofollow" title="Beğendiniz mi?  StumbleUpon'da paylaşın ">Beğendiniz mi?  StumbleUpon'da paylaşın </a>
		</li>
		<li class="sexy-myspace">
			<a href="http://www.myspace.com/Modules/PostTo/Pages/?u=http://orhanbalci.net/tr/?p=639&amp;t=Python+Deneyimleri+3" rel="nofollow" title="Bunu MySpace'de paylaşın">Bunu MySpace'de paylaşın</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?u=http://orhanbalci.net/tr/?p=639&amp;t=Python+Deneyimleri+3" rel="nofollow" title="Bunu Facebook'da paylaşın">Bunu Facebook'da paylaşın</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Python+Deneyimleri+3+-+http://b2l.me/gknq9+(via+@orhanbalci)" rel="nofollow" title="Bunu Tweet'leyin!">Bunu Tweet'leyin!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://orhanbalci.net/tr/?p=639&feed=comments-rss2" rel="nofollow" title="Bu yazının yorumlarına abone olun!">Bu yazının yorumlarına abone olun!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://orhanbalci.net/tr/?p=639&amp;title=Python+Deneyimleri+3&amp;summary=%0D%0A%0D%0A%09Python%27da%20resim%20i%C5%9Flemek%20i%C3%A7in%20standart%20bir%20k%C3%BCt%C3%BCphane%20yok.%20Harici%20k%C3%BCt%C3%BCphane%20olarak%20PIL%20kullan%C4%B1labilir%0D%0A%09Herhangi%20bir%20resim%20dosyas%C4%B1n%C4%B1%20a%C3%A7mak%20i%C3%A7in%20Image.open%28%29%20kullan%C4%B1l%C4%B1yor.%20Teker%20teker%20piksellere%20getpixel%28%29%20fonksiyonuyla%20ula%C5%9F%C4%B1labiliyor%0D%0A%09Herhangi%20bir%20ASCII%20kodu%20karaktere%20%C3%A7evirmek%20i%C3&amp;source=Sekkaşı'nın Bayırı" rel="nofollow" title="Bunu Linkedin'de paylaşın ">Bunu Linkedin'de paylaşın </a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Python+Deneyimleri+3&amp;link=http://orhanbalci.net/tr/?p=639" rel="nofollow" title="Bunu Friendfeed'de paylaşın">Bunu Friendfeed'de paylaşın</a>
		</li>
		<li class="sexy-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://orhanbalci.net/tr/?p=639&amp;title=Python+Deneyimleri+3" rel="nofollow" title="Bunu Slashdot'da saklayın ">Bunu Slashdot'da saklayın </a>
		</li>
		<li class="sexy-blogger">
			<a href="http://www.blogger.com/blog_this.pyra?t&amp;u=http://orhanbalci.net/tr/?p=639&amp;n=Python+Deneyimleri+3&amp;pli=1" rel="nofollow" title="Blog this on Blogger">Blog this on Blogger</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->



<p>İlgili Yazılar:<ol><li><a href='http://orhanbalci.net/tr/?p=620' rel='bookmark' title='Permanent Link: Python Deneyimleri 2'>Python Deneyimleri 2</a> <small> Fonksiyon tanımlamak için def anahtar kelimesini kullanıyoruz. Fonksiyon çağrılmadan...</small></li><li><a href='http://orhanbalci.net/tr/?p=593' rel='bookmark' title='Permanent Link: Python Deneyimleri 1'>Python Deneyimleri 1</a> <small> http://www.istihza.com buradaki python2.x derslerini takip ediyorum from &#8230; import...</small></li></ol></p><img src="http://feeds.feedburner.com/~r/orhanbalci/~4/b89inspy4h8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://orhanbalci.net/tr/?feed=rss2&amp;p=639</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://orhanbalci.net/tr/?p=639</feedburner:origLink></item>
	</channel>
</rss>
