Как здесь использовать оператор instanceof для java?

Я решаю эту проблему в Hackerrank. Как я могу использовать оператор instanceof в Java для успешной компиляции кода?

Ссылка: https://www.hackerrank.com/challenges/java-iterator

Неполный код:

import java.util.*;
public class Main
{
static Iterator func(ArrayList mylist)
{
  Iterator it=mylist.iterator();
  while(it.hasNext())
  {
     Object element = it.next();
     if(~~Complete this line~~)//Hints: use instanceof operator
        break;
  }
  return it;

}

public static void main(String []argh)
{
  ArrayList mylist = new ArrayList();
  Scanner sc=new Scanner(System.in);
  int n=sc.nextInt();
  int m=sc.nextInt();
  for(int i=0;i<n;i++)
  {
     mylist.add(sc.nextInt());
  }
  mylist.add("###");
  for(int i=0;i<m;i++)
  {
     mylist.add(sc.next());
  }


  Iterator it=func(mylist);
  while(it.hasNext())
  {
     Object element = it.next();
     System.out.println((String)element);
  }

 }
}

Несмотря на то, что я сделал это с помощью if(element == "###"), пожалуйста, объясните мне, как использовать оператор instanceof в этом месте.

Редактировать: этот поток не смог предоставить ответы о том, как использовать этот оператор instanceof для проверки экземпляра специальной группы символов, такой как "###" в ArrayList. Пожалуйста, помогите мне понять. Извините, если я нарушаю здесь какое-либо правило.


person Swaggerboy    schedule 15.05.2016    source источник
comment
Извините, но я просмотрел этот поток ранее и не мог понять, как использовать оператор instanceof в моей проблеме. Не могли бы вы помочь?   -  person Swaggerboy    schedule 15.05.2016


Ответы (3)


Этот код добавляет Integer экземпляров, а затем String экземпляров к одному и тому же ArrayList.

Хотя вы этого не сказали, кажется, что цель func состоит в том, чтобы вернуть Iterator, указывающий на первый элемент String, следующий за элементом "###". Поэтому func должен перебирать элементы ArrayList, пока не встретит экземпляр String, который будет "###" String.

static Iterator func(ArrayList mylist)
{
  Iterator it=mylist.iterator();
  while(it.hasNext())
  {
     Object element = it.next();
     if(element instanceof String)
        break;
  }
  return it;

}
person Eran    schedule 15.05.2016
comment
Бинго! Это было в точку! Не могу поверить, что я упустил из виду эту деталь! Спасибо за ответ! :) - person Swaggerboy; 15.05.2016

Пример оператора instanceof -- import java.util.Enumeration; импортировать java.util.Vector;

открытый класс VecReplace {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Vector vector=new Vector();

        vector.add(0, 10);
        vector.add(1, "xyz");
        vector.add(2, 30);
        vector.add(3, 40);
        System.out.println(vector);

        vector.set(3, "abc");
        System.out.println(vector);

        Enumeration e=vector.elements();
        while(e.hasMoreElements())
        {
            Object o=e.nextElement();
            if(o instanceof Integer)
            {
                Integer i=(Integer) o;

                System.out.println(i);
            }

        }


}

}

person Chitranshu Gupta    schedule 15.05.2016

if(element instanceof String){

....... } Это должно дать ожидаемый результат.

person Pragin M    schedule 15.05.2016