2016-10-05 7 views
1

ArrayListには、13-ITEM,14-ITEM,15-ITEMGROUP(セパレータとしてハイフン( - )を使用)のようなデータが含まれています。
は、私は2つの新しいArrayListsにこのリストを分割したい:文字列を含む[13,14,15..] ArrayListを2つの新しいArrayListに分割するにはどうすればよいですか?

  • のArrayList-2[ITEM,ITEM,ITEMGROUP...]
  • 私はIDを含む

    • のArrayList-1 Javaに新しい。前もって感謝します。

    +0

    - 両方のインデックス値を別のアレイリストに追加する –

    +0

    可能であれば、リストの代わりにマップを使用してみてください。 Numberはキーになり、Stringはvauleになります。 –

    答えて

    0

    各エントリを分割し、異なるリストに追加します。テキストにさらに-が含まれている場合は、部分文字列を使用します。

    ArrayList<String> input = ... 
    List<String> output1 = new ArrayList<>(input.size()); 
    List<String> output2 = new ArrayList<>(input.size()); 
    
    for(String item:input){ 
        String[] splitted = item.split("-"); 
        output1.add(splitted[0]); 
        output2.add(splitted[1]); 
    } 
    
    2

    あなたは、次のように、サブ文字列を抽出するためにString#substringを使用し、セパレータのStringのインデックスを検索しString#indexOf(char)を使用することができます。

    List<String> list = Arrays.asList("13-ITEM","14-ITEM","15-ITEMGROUP"); 
    List<String> list1 = new ArrayList<>(list.size()); 
    List<String> list2 = new ArrayList<>(list.size()); 
    for (String s : list) { 
        int index = s.indexOf('-'); 
        // Add what we have before the separator in list1 
        list1.add(s.substring(0, index)); 
        // Add what we have after the separator in list2 
        list2.add(s.substring(index + 1)); 
    } 
    System.out.printf("List 1 = %s, List 2 = %s%n", list1, list2); 
    

    出力:

    List 1 = [13, 14, 15], List 2 = [ITEM, ITEM, ITEMGROUP] 
    
    +1

    おかげで多くの助けになりました –

    0

    次のコードを使用できます。

    List<String> list = Arrays.asList("13-ITEM", "14-ITEM", "15-ITEMGROUP"); 
    list.stream().map(p -> p.substring(0, p.indexOf('-'))).forEach(System.out::println); 
    list.stream().map(p -> p.substring(p.indexOf('-') + 1)).forEach(System.out::println); 
    

    このように(各リストは別のロジックを使用して作成されています)分割すると、コードをさらにカプセル化することができます。たとえば、いくつかの例外処理を追加することができます。

    private static Function<String, String> getFunction() { 
        return new Function<String, String>() { 
         @Override 
         public String apply(String p) { 
          return p.substring(0, p.indexOf('-')); 
         } 
        }; 
    } 
    
    関連する問題