## org.apache.http.message
Class BasicHeaderIterator

    java.lang.Object
      org.apache.http.message.BasicHeaderIterator

All Implemented Interfaces:
  Iterator<Object>, HeaderIterator

    @NotThreadSafe
    public class BasicHeaderIterator

extends Object
implements HeaderIterator

Basic implementation of a `HeaderIterator`.

Since:
  4.0

Field Summary
`protected Header[]` `allHeaders` An array of headers to iterate over.
`protected int` `currentIndex` The position of the next header in `allHeaders`.
`protected String` `headerName` The header name to filter by.

Constructor Summary
`BasicHeaderIterator(Header[] headers, String name)` Creates a new header iterator.

Method Summary
`protected boolean` `filterHeader(int index)` Checks whether a header is part of the iteration.
`protected int` `findNext(int from)` Determines the index of the next header.
`boolean` `hasNext()` Indicates whether there is another header in this iteration.
`Object` `next()` Returns the next header.
`Header` `nextHeader()` Obtains the next header from this iteration.
`void` `remove()` Removing headers is not supported.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### allHeaders

    protected final Header[] allHeaders

  An array of headers to iterate over. Not all elements of this array are necessarily part of the iteration. This array will never be modified by the iterator. Derived implementations are expected to adhere to this restriction.

### currentIndex

    protected int currentIndex

  The position of the next header in `allHeaders`. Negative if the iteration is over.

### headerName

    protected String headerName

  The header name to filter by. `null` to iterate over all headers in the array.

Constructor Detail

### BasicHeaderIterator

    public BasicHeaderIterator(Header[] headers,
                               String name)

  Creates a new header iterator.

  Parameters:
    `headers` - an array of headers over which to iterate
    `name` - the name of the headers over which to iterate, or `null` for any

Method Detail

### findNext

    protected int findNext(int from)

  Determines the index of the next header.

  Parameters:
    `from` - one less than the index to consider first, -1 to search for the first header
  Returns:
    the index of the next header that matches the filter name, or negative if there are no more headers

### filterHeader

    protected boolean filterHeader(int index)

  Checks whether a header is part of the iteration.

  Parameters:
    `index` - the index of the header to check
  Returns:
    `true` if the header should be part of the iteration, `false` to skip

### hasNext

    public boolean hasNext()

  Description copied from interface: `HeaderIterator`
  Indicates whether there is another header in this iteration.

  Specified by:
    `hasNext` in interface `Iterator<Object>`
  Specified by:
    `hasNext` in interface `HeaderIterator`
  Returns:
    `true` if there is another header, `false` otherwise

### nextHeader

    public Header nextHeader()
                      throws NoSuchElementException

  Obtains the next header from this iteration.

  Specified by:
    `nextHeader` in interface `HeaderIterator`
  Returns:
    the next header in this iteration
  Throws:
    `NoSuchElementException` - if there are no more headers

### next

    public final Object next()
                      throws NoSuchElementException

  Returns the next header. Same as `nextHeader`, but not type-safe.

  Specified by:
    `next` in interface `Iterator<Object>`
  Returns:
    the next header in this iteration
  Throws:
    `NoSuchElementException` - if there are no more headers

### remove

    public void remove()
                throws UnsupportedOperationException

  Removing headers is not supported.

  Specified by:
    `remove` in interface `Iterator<Object>`
  Throws:
    `UnsupportedOperationException` - always

Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.