如何将元素从一个ArrayList添加到另一个?

时间:2015-11-01 20:34:40

标签: java arraylist

所以我有一个水果ArrayList,它有水果的名称和它的主要维生素是什么:

ArrayList<Foods> fruit; 
public Fruit() {
  fruit = new ArrayList<Foods>();
  fruit.add(new Foods("Orange", "Vitamin C"));
}

等。

我想将维生素C的所有水果添加到另一个数组列表中,所以我使用以下方法迭代它们:

Iterator vitC = fruit.iterator();
    while (vitC.hasNext()) {
        if (vitC.next().contains("Vitamin C")) {
            vitCfruit.add(vitC.next());
        }
}

然而,这会添加下一个值,因此如果apple在列表中位于橙色之后,它会将apple添加到下一个ArrayList而不是橙色。

3 个答案:

答案 0 :(得分:1)

我会忽略代码中的明显错误。要使用列表中的元素,您应该执行以下操作:

Iterator vitC = fruit.iterator();
    while (vitC.hasNext()) {
        Foods x = vitC.next();
        if (x.contains("Vitamin C")) { // should look for a Foods object here!!!
            administrators.add(x);
        }
}

答案 1 :(得分:0)

&#39;中的vitC.next()你声明会工作,但是当你把它添加到新列表时,你不会访问下一行中的相同元素。

使用tmp变量存储vitC.next(),如果它符合条件,你仍然可以添加ot ..

Iterator vitC = fruit.iterator();
    while (vitC.hasNext()) {
        tmp = vitC.next();
        if (tmp.contains("Vitamin C")) { // should look for a Foods object here!!!
            administrators.add(tmp);
        }
}

答案 2 :(得分:0)

增强的for循环使这很简单:

<ComboBox x:Name="tab5_2_num"  ItemsSource="{Binding}" FontSize="13" FontFamily="/WPF;component/Font/#Agency FB" Margin="722,46,406,281" BorderThickness="1,1,1,4" Height="30">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding}"  />
        </DataTemplate>
    </ComboBox.ItemTemplate>
    <ComboBox.ItemContainerStyle>
        <Style TargetType="{x:Type ComboBoxItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBoxItem}">
                        <Label x:Name="lblCombo" Foreground="Black" FontFamily="/WPF;component/Font/#Agency FB" FontSize="13" Height="20" />
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="lblCombo" Property="Background" Value="#FFF01F1F"/>
                                <Setter TargetName="lblCombo" Property="Foreground" Value="White" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

在Java 8中,使用lambdas很简单:

for (Fruit thisFruit : fruit) {
    if (thisFruit.contains("Vitamin C")) {
        vitCfruit.add(thisFruit);
    }
}