(I) Coleção e coleções
Ambos estão localizados sob o pacote Java.util, a diferença é:
A coleção é uma interface de coleção, com subinterfaces comuns, como o ListSet, e é o primeiro nó do gráfico da estrutura da coleção. Ele fornece uma série de métodos para executar operações básicas em objetos de coleção.
Os métodos comuns são:
Boolean Add (e E) Adicionar elementos ao contêiner; int size () retorna o número de elementos da coleção; boolean isEmpty () determina se o contêiner está vazio; O booleano contém (objeto o) se esta coleção contiver o elemento especificado, ele retorna true e o método iguals () será usado aqui; A remoção booleana (objeto O) remove a instância do elemento especificado; etc.
A Coleções é uma classe de invólucro que contém vários métodos polimórficos estáticos para operações de coleta, que contém algoritmos polimórficos operados na coleção, ou seja, "Wrapper", que retorna uma nova coleção suportada pela coleção especificada e algumas outras coisas.
Os métodos comuns são:
Void Sort (lista) classifica o conteúdo da lista.
Deve -se notar aqui que (PS: A explicação a seguir sobre Sort () é extraída de uma breve discussão sobre matriz de objetos ou listagem e classificação de coleções .
O corpo de classificação nesta função Sort () é Arrays.sort ().
@Suppresswarnings ("desmarcado") public static <t estende comparável <?? super t >> void Sort (list <T> list) {object [] Array = list.toarray (); Arrays.sort (Array); int i = 0; ListIterator <T> it = list.ListIterator (); while (it.hasnext ()) {it.next (); it.set ((t) matriz [i ++]); }} Em Arrays.sort (), pode -se observar que ele é implementado através do comparabableTimsort.sort (objeto [] a): public static void Sort (Object [] Array) {// Comece o Android mudado ComparableTimsort.sort (Array); // End Android-Kanged} Classificação do vazio estático (objeto [] a) para o tipo de vazio estático (objeto [] a, int lo, int hi) para binário estático privado binárioSort (objeto [] a, int lo, int hi, int start). No BinárioSort, a parte usada para comparação de tamanho é: Comparável <ject> pivot = (comparável) a [start]; int esquerd = lo; int certo = start; afirmar esquerda <= direita; while (esquerda <direita) {int mid = (esquerda + direita) >>> 1; if (pivot.compareto (a [mid]) <0) direita = mid; outra esquerda = MID + 1; }O único método da interface comparável é usado na pesquisa binária: compareto (). Se todas as classes personalizadas forem carregadas no contêiner e precisarem ser comparadas, você deverá implementar a interface comparável ou herdar a classe do comparador e substituir o método compareto ().
Int BinarySearch (objeto de lista) Para contêineres de listas seqüenciais, o método de meia-descoberta é usado para encontrar o objeto especificado; Void Reverse (List) organiza os objetos no contêiner da lista em ordem inversa; etc.
(Ii) iterador e iterável
Primeiro, o iterable está localizado sob o pacote java.lang, e o iterador está localizado sob o pacote java.util. Na estrutura de coleta, três métodos são definidos na interface do iterador: boolean hasNext (); e próximo (); void remove (). Iterable define apenas um método: iterator (), o valor de retorno é um objeto que implementa a interface do iterador. A coleção herda a super interface do iterável; portanto, todas as classes de implementação na estrutura de coleta têm o método iterator (), e o polimorfismo permite que a referência do iterador acesse a peça (ou seja, esses três métodos) na coleção atual que implementa o iterador. Se você precisar excluir elementos no momento, como o iterador concluir o bloqueio nesta operação de coleta, você só poderá usar o método Remover () do iterador durante a travessia do loop com o iterador e não pode usar o método Remover (Object) da coleção.
Então, por que temos que implementar a interface iterável? Por que não implementar diretamente a interface do iterador? Dessa forma, a classe de coleção pode herdar diretamente esses três métodos?
Dê uma olhada nas aulas de coleta no JDK, como a família List ou a família Set, que implementam a interface iterável, mas não implementam diretamente a interface do iterador.
Pense nisso com cuidado e faça sentido.
Porque os métodos principais da interface do iterador a seguir () ou hasNext () dependem da posição de iteração atual do iterador.
Se a coleção implementar diretamente a interface do iterador, ele inevitavelmente levará ao objeto de coleta que contém os dados (ponteiro) da posição de iteração atual.
Quando uma coleção é passada entre diferentes métodos, uma vez que a posição de iteração atual não é predefinida, o resultado do método Next () se torna imprevisível.
A menos que um método Reset () seja adicionado à interface do iterador para redefinir a posição de iteração atual.
Mas, nesse caso, a coleção pode ter apenas um local de iteração atual ao mesmo tempo.
Iterable não é o caso, e cada chamada retorna um iterador contando do zero.
Iteradores múltiplos não interferem entre si.
O artigo acima é baseado em alguns pontos de conhecimento confusos (explicação detalhada) na coleção Java. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.