Creer une liste à partir d'un tableau

Fermé
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017 - Modifié le 10 juil. 2017 à 13:50
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017 - 10 juil. 2017 à 19:20
Bonjour

j'ai un tableau et une liste qui contient quelques lignes de ce tableauet à partir de ces deux je veux creer une autre liste qui contient les autres elemnt qui existe dans le tableau et n'existe pas dans la liste


package test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Y {

 public static void main(String[] args) {

  
  
  
  [/contents/234-cvs-introduction Cvs][] table=null;
  
  List<Cvs> listCvs0 = new LinkedList<Cvs>();

     Cvs newOb1 = new Cvs();
     Cvs newOb = new Cvs();
    List<Cvs> listS = new ArrayList<Cvs>();

     

    for (int k = 0, z=table.length/2 ; k < table.length/2 && z <table.length ; z++, k++)  
      {
                    newOb=table[k];
                    newOb1 = table[z];
                    
      
                    if (listS.get(j).T2+dist1+t<newOb.beta1 && listS.get(j).T2+dist1> result && c>0  )             {            

      
                  listS.add(j+1, new Cvs(newOb.id, newOb.X, newOb.Y, newOb.Capacité, newOb.charge, 0,0, newOb.alpah1, newOb.beta1,newOb.T1,newOb.T2)); 

      }       
                    else {
                     
                     
            listS.add(new Cvs(newOb1.id, newOb1.X, newOb1.Y, newOb1.Capacité, newOb1.charge, 0,0, newOb1.alpah1, newOb1.beta1, newOb1.T1, newOb1.T2));
  
                     
                    }
      
      
      
      }
    
    
    for(int j = 0; j < listS.size(); j++)  {
    
    
    System.out.println(listS.get(j).id);
   }
    
    for(int o1 = 0; o1 <table.length; o1++)  { 
     
     System.out.println(table[o1].id);
    } 
    
     
     
     
  
 }}








qui est en bleu c'est le contenu de la liste et le reste c'est le contenu du tableau ! dans la nouvelle je veux recupere les elemnt qui existe dans le tab et n'existe pas dans la liste .


j'ai essayer de faire ça mais il me donne le dernier id du tab avec taille de tableau * taille de list !!!




  	   for(int ct = 0; ct < table.lengh; ct++)  {
							 
		        		   for(int j = 0; j < listS.size(; j++)  {
								 
								if(listS.get(j).id!= table[ct].id)
								{
listCvs0.add(new Cvs(newOb.id, newOb.X, newOb.Y, newOb.Capacité, newOb.charge, 0,0, newOb.alpah1, newOb.beta1,newOb.T1,newOb.T2));
								
									 
								}
								
							 } 
						 }


A voir également:

4 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 juil. 2017 à 18:43
Bonjour,

L'interface List, et plus généralement l'interface Collection dont elle hérite, définit déjà des méthodes pour faire ça, en particulier removeAll te permettra d'enlever de ton tableau tout les éléments qui sont déjà dans la liste.

Integer[] tableau = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<Integer> liste = Arrays.asList(1, 3, 5, 7, 9);

List<Integer> autres = new ArrayList<>(Arrays.asList(tableau));
autres.removeAll(liste);
System.out.println(autres); // [2, 4, 6, 8]
0
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017
10 juil. 2017 à 19:10
j'ai essayé mais li m'affiche le contenu de tout le tableau ! il ne supprime pas cotenu de la liste



		 Cvs[] table=null;

		        	   List<Cvs> listS = new ArrayList<Cvs>();

 List<Cvs> autres = new ArrayList<>(Arrays.asList(table));

		        	   autres.removeAll(listS);
		        	   
		        	   for(int i = 0; i < table.length-listS.size(); i++){
		        	   System.out.println(autres.get(i).id);
		        	   }

0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 juil. 2017 à 19:11
"il ne supprime pas cotenu de la liste"
En même temps ta liste vide, donc c'est normal qu'il ne supprime rien...
0
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017
10 juil. 2017 à 19:13
ma liste n'est pas vide !

jlorsque je fait

for(int j = 0; j < listS.size(); j++) {

System.out.println(listS.get(j).id);
}


il m(affiche le contenu
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 juil. 2017 à 19:16
"ma liste n'est pas vide !"
Moi je regarde ton code et je vois
List<Cvs> listS = new ArrayList<Cvs>();

Et ça c'est bien une liste vide... Donc
autres.removeAll(listS);
ne fera rien.

De plus, je ne sais pas comment est défini ton objet Cvs, mais il faudra que la méthode equals soit correctement redéfini pour qu'il puisse faire le remove.
0
jj1k Messages postés 30 Date d'inscription jeudi 8 juin 2017 Statut Membre Dernière intervention 3 septembre 2017
10 juil. 2017 à 19:20
n'est pas vide j'ai mais j'ai pas mis tout le code c tout







 if (listS.isEmpty())
		        		        {
		        			                   System.out.println("lista fer8a ");
		        			
		        						  		  
		        						  		Double f;
		        						  		Double m;
		        						  		Double distance;
		        						  		
		        						  		   f = Math.abs (newOb1.X - newOb.X);
		        						  		  m= Math.abs (newOb1.Y- newOb.Y);    
		        						  		    distance = Math.sqrt((f)*(f) +(m)*(m));
		        						//  		  System.out.println(distance);
		        						  		  Integer dist = distance.intValue();
		        						  		  
		        						  		  
		        						  		String l = newOb1.alpah1;
		        							    int	o = Integer.parseInt(l);
		        								newOb.T2=o-dist; 		  

		        								newOb.T1=newOb.T2-t;
		        						  		  
		        						  		  newOb1.T1= newOb.T2 + dist;
		        						  		  newOb1.T2= newOb1.T1+t;
		        						  		  
		        						  	System.out.println(newOb.T1);
		        						  	System.out.println(newOb.T2);
		        						  	System.out.println(newOb1.T1);
		        						  	System.out.println(newOb1.T2);

		        				 
		        						  		  
		        							listS.add(new Cvs(newOb.id, newOb.X, newOb.Y, newOb.Capacité, newOb.charge, 0,0, newOb.alpah1, newOb.beta1,newOb.T1,newOb.T2));
		        						
		        							c=c-1;
		        							
		        							listS.add(new Cvs(newOb1.id, newOb1.X, newOb1.Y, newOb1.Capacité, newOb1.charge, 0,0, newOb1.alpah1, newOb1.beta1, newOb1.T1, newOb1.T2));
		        							c=c+1;
		        										
		        							
		        										
		        										
		        										
		        										for(Cvs  cvsL : listS){
		        											   for(Cvs  cvsT : table){
		        												   if(cvsL.getId().equalsIgnoreCase(cvsT.getId())){
		        													   cvsL.setT1(cvsT.T1);
		        													   cvsL.setT2(cvsT.T2);
		        													  // cvsL.setCapacite(cvsT.getCapacite());
		        													}
		        									          }
		        									       }
		        									       
		        									     /*  for(Cvs cvs : listS){
		        									    	   System.out.println(listS.size());
		        								             System.out.println(cvs.getId() + "-" + cvs.getT1() + "-" + cvs.T2  + "-" +  cvs.alpha );
		        								           }*/
		        										    
		        								  	     	  System.out.println("lista 3abitha b :" );
		        								  		     System.out.println(listS.size());
		        								  	
		        						             
		        								  		     
		        			    }  
		        			 
		        			 
 else
		        				 
			   {
		        				 
 	        				 
				 for(int j = 0; j < listS.size(); j++)  {  
		        					 
Double f1;
		        					  		Double m1;
		        					  		Double distance1;
		        					  		
		        					  		   f1 = Math.abs (listS.get(j).X - newOb.X);
		        					  		  m1= Math.abs (listS.get(j).Y- newOb.Y);    
		        					  		    distance1 = Math.sqrt((f1)*(f1) +(m1)*(m1));
		        					  		//    System.out.println(distance);
		        					  		  Integer dist1 = distance1.intValue();
		        						  
		        						  
		        					  		  System.out.println(dist1);
		        					  		  
		        					  		String number1 = newOb.alpah1 ;
		        					  		int al1 = Integer.parseInt(number1);
		        					  		  
		        					  		String number = listS.get(j).alpah1 ;
		        					  		int result = Integer.parseInt(number);
		        					  		  
		        					  		System.out.println(result);
		        					  		
		        					  		  // dist1 heya bin ville jdida w ville eli deja mawjouda (condition)
		        					  		
		        					  		
		        					  		System.out.println(newOb.beta1);
									  		System.out.println("hahi charge");

		        					  System.out.println(c);
		        					  
	//	if (     result + dist1 > al1 && result + dist1 < newOb.beta1 && c>0)
		    if (listS.get(j).T2+dist1+t<newOb.beta1 && listS.get(j).T2+dist1> result && c>0  )    					  		
		    
		    {        				

			    System.out.println("kan condition vérifier nzid origin w n'affichi size ");


		 	    newOb.T1=listS.get(j).T2+ dist1;
		 	    System.out.println(listS.get(j).T2);
		 	    System.out.println(newOb.T1);
		 	    newOb.T2=newOb.T1+t; 		  

		         listS.add(j+1, new Cvs(newOb.id, newOb.X, newOb.Y, newOb.Capacité, newOb.charge, 0,0, newOb.alpah1, newOb.beta1,newOb.T1,newOb.T2)); 
		         c=c-1;
		         System.out.println(listS.get(j+1).id);
		         
		         System.out.println(listS.get(j+2).id);

		        System.out.println(listS.size());
		        					  				
		        	for(Cvs  cvsL : listS){
		        	  for(Cvs  cvsT : table){
		        				   if(cvsL.getId().equalsIgnoreCase(cvsT.getId())){
		        				  cvsL.setT1(cvsT.T1);
		        				   cvsL.setT2(cvsT.T2);
		        				  // cvsL.setCapacite(cvsT.getCapacite());
		        					 }
		        					   }
		        			  }


		        					  				
		        					  				Double f2;
		        					  				Double m2;
		        					  				Double distance2;
		        					  				
		        					  				
		        					  				
		        					  				   f2 = Math.abs (listS.get(j+1).X - listS.get(j+2).X);
		        					  				  m2= Math.abs (listS.get(j+1).Y- listS.get(j+2).Y);    
		        					  				    distance2 = Math.sqrt((f2)*(f2) +(m2)*(m2));
		        					  				//    System.out.println(distance);
		        					  				  Integer dist2 = distance2.intValue();
		        					  			  
		        					  		       System.out.println(dist2);



		        					  		  	  int c1= dist2 +dist1+ t- kdist1;   // heya decalege ta3 wa9t lowel


		        					  		         System.out.println("ne7seb declage w bech nzidou l be9i liste");

		        					  		          System.out.println(c1);

0