Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

terça-feira, 28 de outubro de 2008

aprendendo java: métodos úteis para manipulação de arrays

Iniciando a série "lembretes úteis para quem está aprendendo Java". Esta dica foi obtida no livro "Core Java 2 - Volume I: Fundamentos".

Para copiar o conteúdo de um array para outro, pode-se usar o método arraycopy da classe System. a sintaxe é a seguinte:

System.arraycopy(from, fromIndex, to, toIndex, count);

As variáveis from e to devem ser Object. E como sabemos, todo array em java É UM Object (ou seja, herda os campos e métodos da classe Object).

Traduzindo para o bom português: copie os "count" elementos de "from", começando em "fromIndex" e vá armazenando em "to" a partir de "toIndex".

Exemplo de utilização do método arraycopy:


public class teste {
  public static void main(String args[]) {
    int[] smallPrimes = {2, 3, 5, 7, 11, 13};
    int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};

    System.arraycopy(smallPrimes, 2, luckyNumbers, 3, 4);

    for(int i = 0; i < luckyNumbers.length; i++)
      System.out.println(i +": "+ luckyNumbers[i]);

  } // final de main
} // final da classe teste



A saída deste programa será:

0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13


A simples ordenação de um array pode ser feita através do método sort da classe java.util.Arrays. Para ordenar basta fazer o seguinte (luckyNumbers é um array de inteiros):

Arrays.sort(luckyNumbers);

Reza a lenda que este método usa o QuickSort.


Outros métodos úteis para manipulação de arrays (todos da classe java.util.Arrays):

  • static int binarySearch(type[] a, type v)
    usa o algoritmo de busca binária para buscar o valor v dentro do array a. Se econtrado, seu índice é retornado. Do contrário é retornado um valor negativo r; o valor -r - 1 é o ponto em que v deverá ser inserido para manter o array a ordenado.
    Parâmetros:
    a: um array ORDENADO do tipo int, long, short, char, byte, float ou double.
    v: um valor do mesmo tipo que os elementos de a.

  • static void fill(type[] a, type v)
    atribui o valor v a todos os elementos do array a.

  • tags