Java! Dúvida ao organizar Strings

Sou iniciante em programação, gostaria de saber como organizar um vetor de String, imprimindo na tela os elementos já agrupados, por exemplo, tenho um vetor de String com 5 posições:

0 - Arvore
1 - Bola
2 - Casa
3 - Arvore
4 - Casa

Na hora de imprimir:

Arvore,Arvore,Bola,Casa, Casa

Desde já, agradeço.

Você ta falando de criar um array e definir a posição dessas parada ai?

Estou tentando criar um program de controle de gastos; a aplicação deverá ter a opção de escolha do tipo de gatos(remédio, roupa, etc), a data do gasto e a forma de pagamento. Ele deve ter a opção de visualizar o total de gasto efetuado no mês, agrupados por tipo:

1º criei meu objeto:
public class Despesa {
private String tipo;
private String data;
private String formaPagamento;
private float valor;

public Despesa(String tipo, String data, String formaPagamento, float valor) {
	this.tipo = tipo;
	this.data = data;
	this.formaPagamento = formaPagamento;
	this.valor = valor;
}

public String getTipo() {
	return tipo;
}

public void setTipo(String tipo) {
	this.tipo = tipo;
}

public String getData() {
	return data;
}

public void setData(String data) {
	this.data = data;
}

public String getFormaPagamento() {
	return formaPagamento;
}

public void setFormaPagamento(String formaPagamento) {
	this.formaPagamento = formaPagamento;
}

public float getValor() {
	return valor;
}

public void setValor(float valor) {
	this.valor = valor;
}

}


2º meu controle do objeto:
public class ControleDespesa {
private Despesa despesa[];
private int indice;

public ControleDespesa() {
	despesa = new Despesa[100];
	indice = 0;
}

public boolean cadastrarDespesa(String tipo, String data,
		String formaPagamento, float valor) {
	if (indice < 100) {
		despesa[indice] = new Despesa(tipo, data, formaPagamento, valor);
		indice++;
		return true;
	} else {
		return false;
	}
}

public void exibirGastoMensal() {
	if (indice != 0) {
		for (int i = 0; i < indice; i++) {
			for (int j = 0; j < indice; j++) {
				if (despesa[i].getTipo().equalsIgnoreCase(
						despesa[j].getTipo())) {
					System.out.println("Data: " + despesa[j].getData());
					System.out.println("Tipo de gasto: "
							+ despesa[j].getTipo());
					System.out.println("Forma de pagamento: "
							+ despesa[j].getFormaPagamento());
					System.out.println("Valor: " + despesa[j].getValor());
				}
			}
		}
	} else {
		System.out.println("Nenhuma despesa cadastrada!");
	}
}

}

.Meu problema está na visualização dos gastos por tipo

Se vc quer imprimir as despesas por tipo, é necessário que vc defina qual tipo vc quer exibir.

Exemplo:

public void exibirGastoMensal(String tipo){
	if (indice > 0){ //se o indice for maior que 0, existirá alguma despesa cadastrada.
		for (int i = 0; i < indice; i++){
			if (despesa[i].equalsIgnoreCase(tipo)){ //verifico se a despesa na posição 'i' é igual ao tipo passado pelo parâmetro.
				//imprimo os dados.
				System.out.println("Data: " + despesa[i].getData()); 
				System.out.println("Tipo de gasto: " + tipo);
				System.out.println("Forma de pagamento: " + despesa[i].getFormaPagamento());
				System.out.println("Valor: R$ " + despesa[i].getValor());
			}
		}
	} else {
		System.out.println("Nenhuma despesa cadastrada.");
	}		
}

Outra forma, é assim:

public void exibirGastoMensal(String tipo){
	if (indice > 0){ //se o indice for maior que 0, existirá alguma despesa cadastrada.
		StringBuilder dados = new StringBuilder();
		for (int i = 0; i < indice; i++){
			if (despesa[i].equalsIgnoreCase(tipo)){ //verifico se a despesa na posição 'i' é igual ao tipo passado pelo parâmetro.
				//Insiro os dados em uma StringBuilder
				dados.append("Data: ").append(despesa[i].getData()).append("\n");
				dados.append("Tipo de gasto: ").append(tipo).append("\n");
				dados.append("Forma de pagamento: ").append(despesa[i].getFormaPagamento()).append("\n");
				dados.append("Valor: R$").append(despesa[i].getValor()).append("\n");
			}
		}
		//Faço a verificação do tamanho da minha StringBuilder, se for maior que 0, irá imprimir os dados cadastrados
		//Senao, mensagem informativa de que não há despesas cadastradas com o tipo informado pelo parâmetro.
		System.out.println(dados.length() > 0 ? dados.toString():"Não existem despesas desse tipo");
	}else {
		System.out.println("Não existem despesas cadastradas.");
	}
}

EDIT
Acabei de ver que interpretei a pergunta de forma diferente. Ahaha.

Valeu amigo! Muito obrigado pela explicação, vejo q antes de tudo é preciso bem compreender a questão. :slight_smile:

Pelo que entendi, você quer ordenar seu array, é isso?

Pode utilizar vários tipos de algoritmos diferentes, mas o mais simples é o insertion sort. Algo assim:

int temp;
for (int i = 0; i < array.length - 1; i++) {
	for (int j = i + 1; j < array.lenght; j++) {
		if (array[j] > array[i]) {
			temp = array[i];
			array[j + 1] = array[j];
			array[j] = temp;
		}
	}
}

É só adaptar ao seu código.