Ir para conteúdo
  • 0

Compare ArryList


Ducky

Pergunta

23 respostass a esta questão

Posts Recomendados

Calma ae, Tu quer ver qual array tem mais variavel? ou qual array temn a variavel com o maior valor? "qual tem mais INT"

 

Sem nexo explica melhor isso ai '-'

 

Nunca nem vi

 

Vamos lá..

Tenho 5 ArryList<Integer>

Ai eu tenho um comando qlqer q adiciona +1 na ArryList.. 

 

Eu quero comparar essas 5 ArryList e ver qual tem mais.. Como se fosse um TOP, porém o TOP você pega dentro de um ArryList, eu quero fazer um TOP porém das proprias ArryList.

 

 

AfrpNR6.png

 

Denunciado. 

Link para o comentário
Compartilhar em outros sites

Vamos lá..

Tenho 5 ArryList<Integer>

Ai eu tenho um comando qlqer q adiciona +1 na ArryList.. 

 

Eu quero comparar essas 5 ArryList e ver qual tem mais.. Como se fosse um TOP, porém o TOP você pega dentro de um ArryList, eu quero fazer um TOP porém das proprias ArryList.

 

Denunciado. 

Ta pelo que eu entendi, tu quer ver qual array tem mais variaveis isso? 

Link para o comentário
Compartilhar em outros sites

Cria 2 variaveis int, int a, b;

a = Array1.size();

b = Array2.size();

 

if(a>b){

//a maior que b

}else{

//a menor que b

}

 

Eu fiz pelo GB msm, n testei, tenta ae

Entendi a lógica, porém se forem mais de 10 que eu queira comparar?

Vou dando else ?

Link para o comentário
Compartilhar em outros sites

Entendi a lógica, porém se forem mais de 10 que eu queira comparar?

Vou dando else ?

Else if hehehe

 

Deve ter um jeito mais economico (em questap de linhas), mas ai eu teria que pensar melhor ^^

Link para o comentário
Compartilhar em outros sites

List<ArrayList<String>> arrays = new ArrayList();
// add suas arrays na array acima

ArrayList<String> maiorArray = null;
int size = 0;
for(ArrayList<String> a : arrays)
    if(maiorArray == null){
        maiorArray = a;
        size = a.size();
    }else{
        if(a.size() > size){
            maiorArray = a;
            size = a.size();
        }
    }

Código bem feio aí

Link para o comentário
Compartilhar em outros sites

    private ArrayList<Integer> getHigher(ArrayList<ArrayList<Integer>> arrayLists) {
        ArrayList<Integer> toReturn = null;
        int higher = 0;

        for (ArrayList<Integer> arrayList : arrayLists) {
            for (int i : arrayList) {
                if (i > higher) {
                    higher = i;
                    toReturn = arrayList;
                }
            }
        }

        return toReturn;
    }

Provavelmente tem métodos que já faz isso, mas foi isso que veio na mente.

 ArrayList<Integer> a1 = new ArrayList<>();
        ArrayList<Integer> a2 = new ArrayList<>();
        ArrayList<Integer> a3 = new ArrayList<>();

        a1.add(0);
        a1.add(1);
        a1.add(3);
        a2.add(4);
        a2.add(5);
        a2.add(6);
        a3.add(7);
        a3.add(8);
        a3.add(9);

        ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
        arrayLists.add(a1);
        arrayLists.add(a2);
        arrayLists.add(a3);

        System.out.println(getHigher(arrayLists));
        // [7,8,9]

@Edit

Pera, você quer ver qual array tem o maior elemento, ou qual array tem mais elementos? MAIOR e MAIS tem muita diferença ;-;

Editado por zAth
Link para o comentário
Compartilhar em outros sites

    private ArrayList<Integer> getHigher(ArrayList<ArrayList<Integer>> arrayLists) {
        ArrayList<Integer> toReturn = null;
        int higher = 0;

        for (ArrayList<Integer> arrayList : arrayLists) {
            for (int i : arrayList) {
                if (i > higher) {
                    higher = i;
                    toReturn = arrayList;
                }
            }
        }

        return toReturn;
    }

Provavelmente tem métodos que já faz isso, mas foi isso que veio na mente.

 ArrayList<Integer> a1 = new ArrayList<>();
        ArrayList<Integer> a2 = new ArrayList<>();
        ArrayList<Integer> a3 = new ArrayList<>();

        a1.add(0);
        a1.add(1);
        a1.add(3);
        a2.add(4);
        a2.add(5);
        a2.add(6);
        a3.add(7);
        a3.add(8);
        a3.add(9);

        ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
        arrayLists.add(a1);
        arrayLists.add(a2);
        arrayLists.add(a3);

        System.out.println(getHigher(arrayLists));
        // [7,8,9]

@Edit

Pera, você quer ver qual array tem o maior elemento, ou qual array tem mais elementos? MAIOR e MAIS tem muita diferença ;-;

 

É....

 

Caso queira o array que tem mais elementos, usa meu código, caso contrário, usa o do @zAth

Link para o comentário
Compartilhar em outros sites

    private ArrayList<Integer> getHigher(ArrayList<ArrayList<Integer>> arrayLists) {
        ArrayList<Integer> toReturn = null;
        int higher = 0;

        for (ArrayList<Integer> arrayList : arrayLists) {
            for (int i : arrayList) {
                if (i > higher) {
                    higher = i;
                    toReturn = arrayList;
                }
            }
        }

        return toReturn;
    }

Provavelmente tem métodos que já faz isso, mas foi isso que veio na mente.

 ArrayList<Integer> a1 = new ArrayList<>();
        ArrayList<Integer> a2 = new ArrayList<>();
        ArrayList<Integer> a3 = new ArrayList<>();

        a1.add(0);
        a1.add(1);
        a1.add(3);
        a2.add(4);
        a2.add(5);
        a2.add(6);
        a3.add(7);
        a3.add(8);
        a3.add(9);

        ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
        arrayLists.add(a1);
        arrayLists.add(a2);
        arrayLists.add(a3);

        System.out.println(getHigher(arrayLists));
        // [7,8,9]

@Edit

Pera, você quer ver qual array tem o maior elemento, ou qual array tem mais elementos? MAIOR e MAIS tem muita diferença ;-;

 

Ss, quero o maior mesmo..

Entendi também a lógica, porém só não entendi essa parte e justo nela tem um erro:

 "System.out.println(getHigher(arrayLists));"

Estou querendo retornar em send o maior..

 

 

org.bukkit.command.CommandException: Unhandled exception executing command 'check' in plugin LT v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [Spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
at java.io.Writer.write(Unknown Source) ~[?:1.8.0_144]
at java.io.PrintStream.write(Unknown Source) ~[?:1.8.0_144]
at java.io.PrintStream.print(Unknown Source) ~[?:1.8.0_144]
at java.io.PrintStream.println(Unknown Source) ~[?:1.8.0_144]
at ml.lbplugins.lt.Comandos.onCommand(Comandos.java:30) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Spigot.jar:git-Spigot-db6de12-18fbb24]
... 15 more

 

 

 

@EDIT

Agora que vi seu edit, malz, vou ler lá

 

É....

 

Caso queira o array que tem mais elementos, usa meu código, caso contrário, usa o do @zAth

De fato, quero pegar o MAIOR e não qual tem mais.

Editado por Burpo
Link para o comentário
Compartilhar em outros sites

vai ter q usar uns for bem locao

 

int higher = -99999;

 

for (int i : arrayList1) {
     if (i > higher) {
         higher = i;

    }
}

 

for (int i : arrayList2) {

     if (i > higher) {
         higher = i;

    }
}

 

for (int i : arrayList3) {

     if (i > higher) {
         higher = i;

    }
}

 

for (int i : arrayList4) {

     if (i > higher) {
         higher = i;

    }
}

 

for (int i : arrayList5) {

     if (i > higher) {
         higher = i;

    }
}

 

 

 

se for pra pegar o maior, esta logica seria mais otimizada, pois quebra de nivel, cria mtos fors desnecessarios

Editado por evertonschuster
Link para o comentário
Compartilhar em outros sites

    private ArrayList<Integer> getHigher(ArrayList<ArrayList<Integer>> arrayLists) {
        ArrayList<Integer> toReturn = null;
        int higher = 0;

        for (ArrayList<Integer> arrayList : arrayLists) {
            for (int i : arrayList) {
                if (i > higher) {
                    higher = i;
                    toReturn = arrayList;
                }
            }
        }

        return toReturn;
    }

Provavelmente tem métodos que já faz isso, mas foi isso que veio na mente.

 ArrayList<Integer> a1 = new ArrayList<>();
        ArrayList<Integer> a2 = new ArrayList<>();
        ArrayList<Integer> a3 = new ArrayList<>();

        a1.add(0);
        a1.add(1);
        a1.add(3);
        a2.add(4);
        a2.add(5);
        a2.add(6);
        a3.add(7);
        a3.add(8);
        a3.add(9);

        ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
        arrayLists.add(a1);
        arrayLists.add(a2);
        arrayLists.add(a3);

        System.out.println(getHigher(arrayLists));
        // [7,8,9]

@Edit

Pera, você quer ver qual array tem o maior elemento, ou qual array tem mais elementos? MAIOR e MAIS tem muita diferença ;-;

 

hmm.. Só não entendi esse método:

Ele vai pegar o maior das ArryList que adicionamos correto?

Essa parte eu deveria estar adicionando no cmd de verificação por exemplo?

 

 

private ArrayList<Integer> getHigher(ArrayList<ArrayList<Integer>> arrayLists) {
ArrayList<Integer> toReturn = null;
int higher = 0;

for (ArrayList<Integer> arrayList : arrayLists) {
for (int i : arrayList) {
if (i > higher) {
higher = i;
toReturn = arrayList;
}
}
}

return toReturn;
}
Link para o comentário
Compartilhar em outros sites

vai ter q usar uns for bem locao

 

int higher = -99999;

 

for (int i : arrayList1) {

     if (i > higher) {

         higher = i;

    }

}

 

for (int i : arrayList2) {

     if (i > higher) {

         higher = i;

    }

}

 

for (int i : arrayList3) {

     if (i > higher) {

         higher = i;

    }

}

 

for (int i : arrayList4) {

     if (i > higher) {

         higher = i;

    }

}

 

for (int i : arrayList5) {

     if (i > higher) {

         higher = i;

    }

}

 

 

 

se for pra pegar o maior, esta logica seria mais otimizada, pois quebra de nivel, cria mtos fors desnecessarios

Isso só está resultando sempre no primeiro for, mesmo outra Arry tendo o maior valor..

 

@EDIT

Aparenta realmente ser a maneira mais clear e simples de fazer esse Compare ArryList se funcionar..

Editado por Burpo
Link para o comentário
Compartilhar em outros sites

Isso só está resultando sempre no primeiro for, mesmo outra Arry tendo o maior valor..

 

@EDIT

Aparenta realmente ser a maneira mais clear e simples de fazer esse Compare ArryList se funcionar..

Isso só está resultando sempre no primeiro for, mesmo outra Arry tendo o maior valor..

Testou ai? kkkkk

 

 

Aparenta realmente ser a maneira mais clear e simples de fazer esse Compare ArryList se funcionar..,

va vdd nao, e um codigo descomplicado  kkkkkk

Aparenta realmente ser a maneira mais clear e simples de fazer esse Compare ArryList se funcionar..

Link para o comentário
Compartilhar em outros sites

Bem, coloquei a explicação, espero que consiga entender.

 

Recursividade  pessoal...


/**
 * 
 * @param arrays Pega todas arrays que serão comparadas.
 * @return Retorna a array com o maior numero.
 * 
 */
	private static List<Integer> getListWithMaiorNumero(List<List<Integer>> arrays) {

		arrays.forEach(array -> { //Percore as arrays
			Collections.sort(array); // Sorteia os valores para ficarem na ordem crescente 
			Collections.reverse(array); // Sorteia os valores revertendo a ordem deles, ou seja, decrescente
		});

		List<Integer> maior = null; // armazena a lista com maior numero
		Integer maiorNumber = 0; // armazena o maior numero

		for (List<Integer> list : arrays) { // percorre todas arrays
			Integer atual = list.get(0); // Como os valores foram revertidos e agora estão na ordem decrescente, o maior numero fica na primeira posição, vamos capturar o mesmoo.
			if (Integer.compare(atual, maiorNumber) == 1) {
				/* Compara os valores, se for igual a 1, quer dizer que o numero que acabamos de capturar é maior do que o que estava armazenado
				* Se for igual a 0, quer dizer que os valores são os mesmos, ou seja, não precisa alterar nada, a mesma coisa acontece se for igual a um negativo.
				*/
				maior = list; // armazena a lista com maior numero
				maiorNumber = atual; // armazena o maior numero
			}
		}
		return maior; // retorna a lista com o maior numero
	}

Usando:

	public static void main(String[] args) throws Exception {

		List<Integer> a1 = Arrays.asList(1, 2, 3, 40, 98, 545, 5443);
		List<Integer> a2 = Arrays.asList(1, 245, 3, 40, 98, 545, 55456443);
		List<Integer> a3 = Arrays.asList(1565, 1056, 3, 405445, 98, 645, 5443);

		List<List<Integer>> toCompare = Arrays.asList(a1, a2, a3);

		System.out.println(getListWithMaiorNumero(toCompare));
	}

Saída:

[55456443, 545, 245, 98, 40, 3, 1]
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...