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

Fields
`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

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

### Method Summary

Methods
`protected boolean` `filterHeader(int index)` Checks whether a header is part of the iteration.
`protected int` `findNext(int pos)` 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 pos)

Determines the index of the next header.

Parameters:
  `pos` - 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