Busca em campo String = "100,101,200,201,300" e array por filial, buscar primeira sentença X00

Olá amigos, boa tarde, gostaria de tirar uma dúvida com vocês qual seria a melhor forma para buscar por exemplo:

String modelo = "100,101,200,201,300";

ArrayList<String> modeloList = new ArrayList();
    modeloList.add("100,101,200,201,300");
    modeloList.add("100,300");
    modeloList.add("201,300");
    modeloList.add("300");

  int n = modeloList.size();
   for (i=0; i<n; i++) {
      System.out.printf("Posição %d- %s\n", i, modeloList.get(i));
    }

A minha dúvida é a seguinte, percorrer o Array, e verificar tipo assim, ao encontrar o 300 por exemplo, se tivesse no array, 300,301, ele diria pelo primeiro 3 que seria válido para ser mostrado, e se tivesse o array 100,101,200,201,300, ele pelo último 300, ele saber que o primeiro 3, também seria válido para um usuario que fosse de 301, e 100,101, e assim sucessivamente, alguém saberia me ajudar? Isso são varios produtos, e um cliente de uma filial por exemplo 300, iria ver todos os produtos que fossem válidos para as filiais, 300, 301, 302, emfim, os codigos XXX, seria como se a primeira casa, deixasse exibir as de sua mesma filial, não sei se confundi, grato.

vamos la

se vc fizer modelo.split(",") vc obtem um array de strings.

ou seja, qualquer string vc pode separar ( ou fazer um split )

no seu modelo vc tem N sub-strings.

no seu modeloList vc tem M elementos que podem conter entre 1 ou mais sub-strings

vc vai ter q fazer 2 loops e adicionar alguma logica ai. não é dificil porem achei o seu problema um pouco nebuloso, tente usar split e tente ver ate onde vc vai e pede mais ajuda se for o caso (explicando melhor).

Bom dia amigo peczenyj, realmente é um problema entanto, a lógica vai se aplicar em um sistema java/android, sei que estes dispositivos possuem recursos muito reduzidos, comparados com um PC/Not enfim, vou fazer a lógica separado e postar como ficou, mas entendi o que você me disse sim, e vou testar e postar como ficou, obrigado pela força.

Amigos bom dia tudo bem, cheguei a um resultado bastante significante em relação a minha lógica, segue resultado, espero que nos dispositivos móveis me renda um desempenho até bom, mas me deparei com uma situação que ao percorrer o for da primeira linha por exemplo, se eu encontrar por exemplo:

Um vendedor seja da filial 100, e ao percorrer a lista de filiais, a primeira linha esta da seguinte forma: “modeloList.add(“000,100,101,200,201,211”);” da para notar que tenho ja o 100 no segundo elemento da llinha:

Posição filial:: 1 filial:: 100
Posição 1:: 1
Vendedor da filial::: 100 Pertencente a filial:: 100"

Só que ele continuar executando o for para esta linha, ele poderia parar e verificar a proxima linha do array, a “modeloList.add(“100,301”);”, sei que isso é possivél, mas minha dúvida e como, abraço, segue o código, esta meio zuado kkkkkk, obrigado por enquanto.

identar texto pre-formatado em 4 espaços

import java.util.ArrayList;
import java.util.Arrays;

public class SelecionaFilial {

public static void main(String[] args){
	String modelo = "100,101,200,201,300";
	
	ArrayList<String> modeloList = new ArrayList();
	
	modeloList.add("000,100,101,200,201,211");
	modeloList.add("100,301");
    modeloList.add("201,100");
    modeloList.add("300");
    
    int n = modeloList.size();
    
    int i = 0;
    for(String filiais: modeloList){
    	//System.out.printf("Posição %d- %s\n", i, filiais);
    	
    	//Separando com split
    	String[] filialValida = filiais.split(",");
    	//Exibir valores separadamente
    	System.out.println("::FILIAIS VÁLIDAS:: " +Arrays.toString(filialValida));
    	System.out.println("::TAMANHO:: " +filialValida.length);
    	
    	
    	int vendedorFilial = 100;
    	
    	for(int ii = 0; ii < filialValida.length; ii++){
    		
    		String castVendedorFilial = String.valueOf(vendedorFilial);
    		
    		System.out.println("Posição filial:: " + ii + " filial:: " + filialValida[ii]);
    		System.out.println("Posição 1:: " +filialValida[ii].substring(0,1));
    		
    		if(filialValida[ii].substring(0,1).equals(castVendedorFilial.substring(0,1))){
    			System.out.println("Vendedor da filial::: " +vendedorFilial+ " Pertencente a filial:: " +filialValida[ii] );
    		}
    	}
    	System.out.println("FIM BLOCO =====================================================");
    	
    	i++;
    }
    		
    
	
}

}

Amigos, consegui resolver a minha lógica das filiais com a ajuda de nossos amigos, agradeço a todo, é só colocar um break no bloco a seguir:

identar texto pre-formatado em 4 espaços
    		if(filialValida[ii].substring(0,1).equals(castVendedorFilial.substring(0,1))){
    			System.out.println("Vendedor da filial::: " +vendedorFilial+ " Pertencente a filial:: " +filialValida[ii] );
    			break;
    		}

Obrigado a todos e tenham um ótimo dia.

1 curtida

Bom dia amigos, como buscar de maneira que não saia caso contenha a sentença, por exemplo, na String[] filial tenho:
FILIAL…100,101,110,120,200,201,210,211 getProdDesc… Creme Pepino Pepilon 50g Pele Normal 69001

meu vendedor tem o codigo 201, so que fiz um if da seguinte forma:

    for(ListaPrecoProduto u : Collections.list(Collections.enumeration(ls))){
        //System.out.println("------------------------------------------------> " +u.getProduto().getDescricao() + " Filiais válidas::: " +u.getProduto().getCodFilial());

        //TODO Rotina para filtrar produtos conforme filial do representante.
        filialValida = u.getProduto().getCodFilial().split(",");
        Log.e("ERR.FILIAL", "FILIAL.........." +u.getProduto().getCodFilial() + " getProdDesc.. " +u.getProduto().getDescricao());
        for (int i = 0; i < filialValida.length; i++){
            if(filialValida[i].substring(0,1).equals(getCodigoFilialVendedor().substring(0,1)) || filialValida[i].substring(0,1).equals("0")){
                Log.d("FORIF", "FORIF.. filial val.. " +filialValida[i].substring(0,3) + " / getCodFilialVende... " + getCodigoFilialVendedor().substring(0,3) + " / filialValid... " + filialValida[i].substring(0,1) + " getProdDesc.. " +u.getProduto().getDescricao());
                //Log.d("filialvalida ", "somente produto filial " +u.getProduto().getDescricao() + " Filiais usuario::: " +u.getProduto().getCodFilial()  + " filialValida:: " + filialValida[i] );
                //ls.add(u);
                //break;
                continue;
            }else{
                //Remove itens diferente da filial do vendedor
                Log.d("FORIF", "FORELSE.. filial val.. " +filialValida[i].substring(0,3) + " / getCodFilialVende... " + getCodigoFilialVendedor().substring(0,3) + " / filialValid... " + filialValida[i].substring(0,1) + " getProdDesc.. " +u.getProduto().getDescricao());
                ls.remove(u);
            }
        }
    }

Como fazer um contains para não remover o item, por exemplo, por ja começar em 100, ele entra no else e remove ele da lista principal, não queria remover, porque não posso remover se ele existir na sentença, grato.