import java.util.*; public class IteratorTest { public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); Iterator<Integer> iterator=list.iterator(); while(iterator.hasNext()){ Integer item=iterator.next(); System.out.println(item); } } }
import java.util.*; public class EnumerationTest { public static void main(String[] args) { Vector<Integer> vector=new Vector<Integer>(); vector.add(1); vector.add(2); vector.add(3); Enumeration<Integer> enumeration=vector.elements(); while(enumeration.hasMoreElements()){ Integer item=enumeration.nextElement(); System.out.println(item); } } }
List> groupList=new ArrayList>(); ArrayList list=new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); list.add("6"); list.add("7"); list.add("8"); list.add("9"); list.add("10"); for (int i=0;i3) { if((i+3)<=(list.size()-1)){ groupList.add(list.subList(i, i+3)); }else{ groupList.add(list.subList(i,list.size())); } } for (List sublist : groupList) { System.out.println("grup:"); for (String item : sublist) { System.out.println(item); } }
for (Enumeration e = v.elements() ; e.hasMoreElements() ;) { Object obj=e.nextElement(); }
Map map=new HashMap(); ArrayList list= new ArrayList(map.values());
Set set = new HashSet(list);Bir Set nesnesini ise aşağıdaki gibi bir List nesnesine çevirebilirsiniz :
List list = new ArrayList(set);
public enum Test { ITEM1(1,"Madde 1"), ITEM2(2,"Madde 2"), ITEM3(3,"Madde 3"), ITEM4(4,"Madde 4"), ITEM5(5,"Madde 5"); private Test(int no,String title) { setNo(no); setTitle(title); } private int no; private String title; public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; }Yukarıda Test enum'unun no ve title özelliği bulunmaktadır. Her maddenin bu iki özelliği olacaktır. Örneğin üçüncü maddenin değerine Test.ITEM3.no , title değerine Test.ITEM3.title ile erişilebilir
Exception in thread "main" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:321)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
import java.util.*; public class SortNullTest { public static void main(String[] args) { List<String> list = Arrays.asList("HI", "BYE", null, "MERHABA", ":)"); Collections.sort(list); } }
Exception in thread "main" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:321)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
at java.util.Arrays.sort(Arrays.java:1246)
at java.util.Arrays.sort(Arrays.java:1433)
at java.util.Arrays$ArrayList.sort(Arrays.java:3895)
at java.util.Collections.sort(Collections.java:141)
at com.test.SortNullTest.main(SortNullTest.java:13)
Yöntem | Exception Oluşur | Null Dönülür |
Ekle | add() | offer() |
Al ve Kaldır | remove() | poll() |
Yöntem | Exception Oluşur | Null Dönülür | Bloklar/Bekler | Belirli Süre Bloklar/Bekler |
Ekle | add() | offer() | put() | offer() |
Al ve Kaldır | remove() | poll() | take() | poll() |
Sadece Al | element() | peek() | - | - |
import java.util.concurrent.BlockingQueue; public class SimpleConsumer implements Runnable{ private final BlockingQueue<Integer> queue; public SimpleConsumer(BlockingQueue<Integer> queue) { this.queue=queue; } @Override public void run() { while (true) { try { System.out.println("element bekleniyor "); int element=queue.take(); System.out.println("element alindi : "+element); } catch (InterruptedException e) { e.printStackTrace(); } } } }SimpleConsumer sınıfı bir Thread'dir ve kurucu ile Integer değerleri tutan bir BlockingQueue almaktadır. Sonsuz döngü içinde queue.take() yöntemi ile kuyruğa girilen elemanları beklemektedir. take() yöntemi thread'i kuyruğa yeni bir eleman gelene kadar bekletir. Yeni bir eleman geldiğinde sayıyı alır ve ekrana basar. Sonrasında kuyrukta başka elamanları sırayla alır. Eğer kuyrukta eleman kalmaz ise beklemeye devam eder. SimpleConsumer dışarıdan sonlanmadığı sürece devam edecektir. SimpleConsumer sınıfı test etmek için aşağıdaki gibi bir uygulama yapılabilir:
import java.util.Scanner; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class ConsumerBlockingQueueTest { public static void main(String[] args) { BlockingQueue<Integer> queue = new ArrayBlockingQueue(1000); SimpleConsumer consumerTest = new SimpleConsumer(queue); Thread t = new Thread(consumerTest); t.start(); boolean exit=false; try (Scanner scanner = new Scanner(System.in)) { while(!exit) { // sayi disinda herhangi bir sey girilirse uygulamadan cikilir String input = scanner.next(); try { int number=Integer.parseInt(input); queue.add(number); } catch (NumberFormatException e) { exit=true; } } } System.out.println("exit"); System.exit(0); } }İlk olarak en fazla 1000 elemanın olabileceği bir BlockingQueue yaratılır. Ardından SimpleConsumer thread'i başlatılır. Kullanıcıdan sürekli sayı almak için scanner sonsuz döngüye alınır. Alınan sayı queue.add(number) ile kuyruğa eklenir. Kullanıcı sayı dışında bir değer girdiğinde döngü sonlanır ve uygulama kapatılır. Uygulama aşağıdaki gibi test edilebilir :
element bekleniyor 10 element alindi : 10 element bekleniyor 25 element alindi : 25 element bekleniyor 35 element alindi : 35 element bekleniyor E exitUygulama ilk açıldığında SimpleConsumer element bekleniyor mesajını yazar ve int element=queue.take(); satırında bekler. 10 değerini girdiğinizde değer kuyruğa eklenir ve SimpleConsumer kuyruktan alır ve element alindi : 10 mesajını basar ve yeni değeri beklemeye başlar. Diğer sayılar içinde aynı durum devam eder. E yazıldığında uygulama sonlanır.