Aprendendo idéias de programação Java (2) - container Java

Uso de contêineres comuns Java

Os contêineres comumente usados ​​são
provavelmente

-Subclasses da lista

ArraryList 和 LinkedList

-Subclasses de Mapa

HashMap, TreeMap, LinkedHashMap mais um ConcurrentHashMap (segurança simultânea)

-Subclasses de conjunto

HashSet , TreeSet

-Queue e subclasses (menos usados ​​em outros lugares, exceto simultaneidade)

Tendo dito tantas razões pelas quais esses recipientes são amplamente utilizados, o primeiro ponto deve serEstrutura de dadosRazão.

Do ponto de vista da estrutura de dados,
ArrayList é uma tabela linear (generalizada) e LinkedList é uma lista vinculada.
Mapa é um par de valores-chave.
Conjunto é uma coleção não ordenada sem repetir elementos.
Fila

Então, por que não há pilha?
A resposta é que existe uma pilha. Na versão inicial, existe uma pilha baseada em vetor. Sabendo disso, você sabe que o
criador herda diretamente a pilha baseada em vetor para simplificar. Para a pilha, operações de inserção e exclusão frequentes são, sem dúvida, para matrizes É um desastre e contém um método intermediário, que é inconsistente com a própria estrutura de dados.
EntãoNão recomendado Pilha e vetor
Para a pilha, o LinedList pode atender totalmente a todas as necessidades da pilha. O LinkedList também pode substituir completamente a Fila.

Roubar uma foto ainda é muito claro
Diagrama de contêiner Java

Impressão em contêiner

A impressão em contêiner chama o método toString () por padrão. Pode ser reescrita, se necessário, mas não é recomendável reescrever diretamente, use o modo adaptador para reescrever.
Muito simples

public class Test {
    public static void main(String[] args){
        Random random = new Random(11);
        List<Integer> list = new ArrayList<>();
        Map<Integer,Integer> map = new TreeMap<>();
        Set<Integer> set = new LinkedHashSet<>();
        for(int i=0;i<5;i++){
            list.add(random.nextInt(10));
            map.put(i,random.nextInt(10));
            set.add(random.nextInt(10));
        }
        System.out.println(list.toString());
        System.out.println(map);
        System.out.println(set);
    }
}

O resultado:

[8, 5, 0, 7, 7]
{0=8, 1=3, 2=3, 3=4, 4=9}
[1, 7, 3, 4, 2]

Adicionar e excluir contêineres

Para classes na interface Collection

boolean add(E e);

boolean remove(Object o);

boolean addAll(Collection<? extends E> c);

boolean removeAll(Collection<?> c);

Mapa

void putAll(Map<? extends K, ? extends V> m);

void clear();

V put(K key, V value);

default boolean remove(Object key, Object value) ;

Iteração ou travessia do contêiner

1. Passagem do Iterador

Para contêineres de coleção, é necessário chamar apenas o método iterator (). Basta obter o objeto iterador.
Para objetos de mapa, apenas o objeto de entrada possui um método iterador

 public static void main(String[] args){
        Random random = new Random(11);
        List<Integer> list = new ArrayList<>();
        Map<Integer,Integer> map = new TreeMap<>();
        Set<Integer> set = new LinkedHashSet<>();
        for(int i = 0;i < 5;i++){
            list.add(random.nextInt(10));
            map.put(i,random.nextInt(10));
            set.add(random.nextInt(10));
        }
        // 获取迭代器对象
        Iterator<Integer>  iterator1 = list.iterator();
        Iterator<Integer> iterator2 = set.iterator();
        Iterator<Map.Entry<Integer,Integer>> iterator3= map.entrySet().iterator();
        
        while (iterator1.hasNext()){
            System.out.print(iterator1.next()+" ");
        }
        System.out.println();
        while (iterator2.hasNext()){
            System.out.print(iterator2.next()+" ");
        }
        System.out.println();
        while (iterator3.hasNext()){
            Map.Entry entry = iterator3.next();
            System.out.print(entry.getKey()+":"+entry.getValue()+" ");
        }
        System.out.println();
    }
8 5 0 7 7 
1 7 3 4 2 
0:8 1:3 2:3 3:4 4:9

2. A interface Iterável pode ser percorrida para cada

public static void main(String[] args){
        Random random = new Random(11);
        List<Integer> list = new ArrayList<>();
        Map<Integer,Integer> map = new TreeMap<>();
        Set<Integer> set = new LinkedHashSet<>();
        for(int i=0;i<5;i++){
            list.add(random.nextInt(10));
            map.put(i,random.nextInt(10));
            set.add(random.nextInt(10));
        }
        for(Integer num: list){
            System.out.print(num+" ");
        }
        System.out.println();
        for(Integer num: set){
            System.out.print(num+" ");
        }
        System.out.println();
        for(Map.Entry entry :map.entrySet()){
            System.out.print(entry.getKey()+":"+entry.getValue()+" ");
        }
        System.out.println();
    }
8 5 0 7 7 
1 7 3 4 2 
0:8 1:3 2:3 3:4 4:9 

Comparação de contêineres

Publicado 22 artigos originais · Curtidas2 · Visitas 881

Acho que você gosta

Origin blog.csdn.net/weixin_41685373/article/details/96740134
Recomendado
Clasificación