2015-05-08 2 views
-1
/** traversing elements */ 
import java.util.*; 
class Traversor extends Thread 
{ 
Enumeration e; 
public Traversor(Enumeration e) 
{ 
this.e=e; 
} 
public void run() 
{ 
System.out.println("new thread started, traversing vector elements....."); 
while(e.hasMoreElements()) 
{ 
System.out.println(e.nextElement()); 
try 
{ 
Thread.sleep(4000); 
} 
catch(Exception ex) 
{} 
} 

System.out.println("new thread completed"); 
} 
} 


class vectortest{ 
public static void main(String args[]) 
{ 
System.out.println("main thread started, creating vector..."); 
Vector v=new Vector(); 
v.addElement("one"); 
v.add("three"); 
v.add(1,"two"); 

Enumeration e=v.elements(); 
System.out.println("vector created ,enumeration obtained"); 
Traversor th=new Traversor(e); 
th.start(); 
System.out.println(" new thread launched , suspending main thread"); 

try{ 
Thread.sleep(1000); 
} 
catch(Exception ex) 
{} 
System.out.println("main thread resumed,modifying vector"); 
v.add("four"); 
v.add("five"); 
System.out.println("vector modified, main thread completed"); 
} 
} 
+1

Пожалуйста, будьте более конкретным по вашему вопросу. Кроме того, вы, кажется, использует устаревшие классы '' VECTOR' и Enumeration' вместо '' ArrayList' и Iterator', вы последовавший очень старый учебник/книгу? – Kayaman

+1

Вопросы просят отладки помощи должны содержать [ясный, проверяемый и минимальный] (http://stackoverflow.com/help/mcve) пример, и включают в себя желаемое поведение. Это ничего не дает! – Docteur

+0

Кроме того, этот код полностью не читается. Отступьте это правильно. –

ответ

0

Java (введен достаточно поздно) ввод пунктов сбора как Vector из Object с как Vector<T>, где T является параметром типа дан, как Vector<String>. (Это называется generic typing.)

Теперь компилятор может «проверить», являются ли типы элементов в порядке.

class Traversor<T> extends Thread { 

    Enumeration<T> e; 

    public Traversor(Enumeration<T> e) { 
     this.e = e; 
    } 

    public void run() { 
     System.out.println("new thread started, traversing vector elements....."); 
     while (e.hasMoreElements()) { 
      System.out.println(e.nextElement()); 
      try { 
       Thread.sleep(4000); 
      } catch (Exception ex) { 
      } 
     } 

     System.out.println("new thread completed"); 
    } 
} 

class VectorTest { 

    public static void main(String args[]) { 
     System.out.println("main thread started, creating vector..."); 
     Vector<String> v = new Vector<>(); 
     v.addElement("one"); 
     v.add("three"); 
     v.add(1, "two"); 

     Enumeration<String> e = v.elements(); 
     System.out.println("vector created ,enumeration obtained"); 
     Traversor<String> th = new Traversor<>(e); 
     th.start(); 
     System.out.println(" new thread launched , suspending main thread"); 

     try { 
      Thread.sleep(1000); 
     } catch (Exception ex) { 
     } 
     System.out.println("main thread resumed,modifying vector"); 
     v.add("four"); 
     v.add("five"); 
     System.out.println("vector modified, main thread completed"); 
    } 
} 

Кстати, вектор и перечисление довольно старые. На самом деле редко бывает Vector.

// Alternative to Vector: 
List<String> list = new ArrayList<>(); 
list.add("alpha"); 
for (String s : list) { ... } 

// Alternative to Enumeration: 
Iterator<String> iterator = list.iterator(); 
while (iterator.hasNext()) { 
    String s = iterator.next(); 
} 
Смежные вопросы