2016-04-27 7 views
3

誰かが文字列配列のArrayListからStringを削除するためのロジックを公開することはできますか?文字列配列のArrayListからStringを削除するためのロジックはありますか?

ArrayList <String[]> test = new ArrayList <>();

test.remove(i)[k]; won't work. Where 'i' and 'k' are possible loops.

実際に私は、統合ソルバーを作るしようとしています。私はsplitメソッドを使って '+'に関して完全な文字列入力を分割し、全体をarraylistに変更しました。親切にあなたは配列の要素を「削除」することはできません//deleting positive data from negative finalコメント

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


public class IntegrationClass { 

public static final String calculate(String input) 
{ 
    String rawPositive[]; 
    String rawNegInitial[]; 
    String[] rawNeg=null; 
    String SplitPosArray[] = null; 
    String SplitNegArray[]=null; 

    ArrayList<String[]> rawNeg1= new ArrayList<>(); 
    ArrayList <String> DataNeg = new ArrayList<>(); 
    ArrayList <String> DataPos = new ArrayList<>(); 
    ArrayList <String> SplitPos = new ArrayList<>(); 
    ArrayList <String> SplitNeg = new ArrayList<>(); 
    ArrayList <ArrayList> PosPower= new ArrayList<>(); 
    ArrayList <ArrayList> NegPower= new ArrayList<>(); 


    ArrayList <String> tempX = new ArrayList<>();  

    if (input.contains("+")==true||input.contains("-")==true) 
    { 

     rawPositive= input.split("\\+"); 
     //casting raw positive into array list 
     DataPos = new ArrayList<>(Arrays.asList(rawPositive)); 

     //putting positive final data into raw initial data 

      rawNegInitial= DataPos.toArray(new String[DataPos.size()]); 


     // deleting negative value from positive final 
     for(int i =0;i<DataPos.size();i++) 
     { 
     if(DataPos.get(i).contains("-")) 
     { 
      String temp[]; 
      temp=DataPos.get(i).split("\\-"); 
      DataPos.set(i, temp[0]); 
     } 
     } 


      //putting initial data in raw of negative from positive data 

      for(int i =0;i<rawNegInitial.length;i++) 
      { 
       //System.out.println(rawNegInitial[i]); 
       if(rawNegInitial[i].contains("-")==true) 
       { 
        rawNeg=rawNegInitial[i].split("\\-"); 
        rawNeg1.add(rawNeg); 
       } 
      } 

      //casting negative raw into final negative data 
      try{ 
      // DataNeg = new ArrayList<>(Arrays.asList(rawNeg1)); 

      //deleting positive data from negative final 
      for(int j=0;j<rawNeg1.size();j++) 
      { 
       for(int k=0;k<2;k++) 
       { 
      for(int i =0;i<DataPos.size();i++) 
      { 

        String a=rawNeg1.get(j)[k]; 
        System.out.println(DataPos.get(i) +" "+ a); 
        if(DataPos.get(i).contains(a)) 
        { 

         //x^1+x^2-x^3+x^4-x^5 
         System.out.println("here"); 
         try{ 
         rawNeg1.get(j)[k-1]=rawNeg1.get(j)[k]; 
         } 
         catch(ArrayIndexOutOfBoundsException ex) 
         { 

          rawNeg1.get(j)[k]=rawNeg1.get(j)[k+1]; 
         } 
         //rawNeg1.get(j)[k]= null; 
        } 
        else 
        { 
         tempX.add(a); 
        } 

        System.out.println(rawNeg1.get(j)[k]+ " yoy "); 
      } 
       } 
      } 
      // DataNeg = new ArrayList<>(tempX); 

      //adding minus sign with negative array. 
      for(int i=0;i<DataNeg.size();i++) 
      { 
       String x=DataNeg.get(i); 
       x="-"+x; 
       DataNeg.set(i, x); 
      } 
      } 
      catch(NullPointerException np) 
      { 

      } 
      //splitting^from PosArrayList 
      for(int i =0;i<DataPos.size();i++) 
      { 
       if(DataPos.get(i).contains("^")) 
       { 
        SplitPosArray=DataPos.get(i).split("\\^"); 
        SplitPos = new ArrayList<>(Arrays.asList(SplitPosArray)); 
        PosPower.add(SplitPos); 
       } 
      } 

      //splitting^from NegArrayList 
      for(int i =0;i<DataNeg.size();i++) 
      { 
       if(DataNeg.get(i).contains("^")) 
       { 
        SplitNegArray=DataNeg.get(i).split("\\^"); 
        SplitNeg = new ArrayList<>(Arrays.asList(SplitNegArray)); 
        NegPower.add(SplitNeg); 
       } 
      } 






      // checking original positive data 
      for(int i=0;i<DataPos.size();i++) 
      { 
       System.out.println(DataPos.get(i)); 
      } 

      //checking original negative data 

      for(int i =0;i<rawNeg1.size();i++) 
      { 
       System.out.println(rawNeg1.get(i)[i]); 
      } 
      //checking sillppted postive 
      for(int i=0;i<PosPower.size();i++) 
      { 
       for(int j=0;j<2;j++) 
       { 
       System.out.println(PosPower.get(i).get(j)); 
      } 
       } 
      //checking splitted negaitve 
      for(int i=0;i<NegPower.size();i++) 
       { 
        for(int j=0;j<2;j++) 
        { 
        System.out.println(NegPower.get(i).get(j)); 
       } 
        } 
    } 

    return "return"; 
} 
} 

答えて

0

を検討 :コードは、と見ることができます。 nullのように、それをいくつかのセンチネル値に割り当てることができます。

List<String[]> test = ... 
test.get(i)[k] = null; 

あなたは代わりにリストのリストとしてそれを実装することができます

List<List<String>> test = ... 
test.get(i).remove(k); 
+0

しかし、splitメソッドは、文字列配列の戻り値の型が含まれています。 –

+0

そのためのクイックソリューション: 'new ArrayList (Arrays.asList(array))' –

+0

以前と同じように。しかし、コードを正しく理解していないと思います。それを確認してください。私は、そのrawPositiveデータをソートのためにNegativeDataにコピーしています。 –

関連する問題