Use LinkedHashSet for HttpHeaders.names() and add Javadoc about the performance of names() and entries()

This commit is contained in:
Trustin Lee 2013-12-22 19:21:07 +09:00
parent 7347bfec50
commit f438eb348a
2 changed files with 8 additions and 11 deletions

View File

@ -22,13 +22,13 @@ import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.TreeSet;
public class DefaultHttpHeaders extends HttpHeaders {
@ -376,9 +376,7 @@ public class DefaultHttpHeaders extends HttpHeaders {
@Override
public Set<String> names() {
Set<String> names = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
Set<String> names = new LinkedHashSet<String>();
HeaderEntry e = head.after;
while (e != head) {
names.add(e.key);

View File

@ -1177,10 +1177,9 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
public abstract List<String> getAll(String name);
/**
* Returns the all headers that this message contains.
*
* @return A {@link List} of the header name-value entries, which will be
* empty if no pairs are found
* Returns a new {@link List} that contains all headers in this object. Note that modifying the
* returned {@link List} will not affect the state of this object. If you intend to enumerate over the header
* entries only, use {@link #iterator()} instead, which has much less overhead.
*/
public abstract List<Map.Entry<String, String>> entries();
@ -1198,9 +1197,9 @@ public abstract class HttpHeaders implements Iterable<Map.Entry<String, String>>
public abstract boolean isEmpty();
/**
* Gets a {@link Set} of all header names that this message contains
*
* @return A {@link Set} of all header names
* Returns a new {@link Set} that contains the names of all headers in this object. Note that modifying the
* returned {@link Set} will not affect the state of this object. If you intend to enumerate over the header
* entries only, use {@link #iterator()} instead, which has much less overhead.
*/
public abstract Set<String> names();