字符串数组的减法

时间:2013-10-16 15:22:48

标签: java arrays string

是否可以减去2个String数组以生成新数组?在下面的代码中,我调用我为其他Array操作编写的Methods。我想使用这些方法的结果创建一个新数组。我需要在一行代码中创建新数组。

由于这是一个硬件分配,我不是在寻找为我编写的代码。只是一个小方向。

static String[] xor( String[] set1, String[] set2 )
{
    set1 = (union(set1, set2) - intersection(set1, set2)); 
    return set1; 
}

4 个答案:

答案 0 :(得分:0)

我会将两个数组的内容存储在Set(每个一个)中,因为这些操作优化了集合(查看add / addAll,remove / removeAll,retainAll方法)。

阅读the Java Tutorial bit about Sets以获取进一步的参考。

答案 1 :(得分:0)

有几种方法可以去。

如果您了解收藏品,可以查看Arrays.asListList#removeAllList#toArray

但是,如果不这样做,则可以使用循环。

  • 创建boolean[]一样大的union和一个int计数器,从0开始;
  • 迭代union;
  • 对于每个String,请检查intersection;
  • 中是否存在false
  • 如果是,请将boolean[]存储在当前索引的true中;
  • 如果不是,请存储String[],然后在计数器中添加一个。
  • 创建您想要返回的boolean[];它的长度是计数器的值;
  • 迭代true,并在找到union的索引处从{{1}}中选择具有相同索引的字符串,并将其存储在第三个数组中。

答案 2 :(得分:0)

让我们快速简化您的问题。根据您的描述,您实际上并不关心数组是否已设置,最终结果是两组的xor。您只想从另一个数组中删除一个数组的内容,例如:

primary = {1, 2, 3, 4, 5, 6}
remove = {3, 5}
result = subtract(primary, remove) = {1, 2, 4, 6}

根据您的评论“我需要在一行代码中创建新数组”,您可能已经拥有了这样一个工具,或许您之前实现的另一种方法?如果没有,你可能不能在一行中做到这一点,但这并不难。只需循环遍历第一个数组(primary),对于primary中的每个项目,查看是否在remove中找到了值,如果没有,请将primary中的项添加到result。确保result数组的大小合适将会有点棘手,但希望这可以指出正确的方向:)

答案 3 :(得分:0)

static String[] xor( String[] set1, String[] set2 )
{
    set1 = (union(set1, set2) - intersection(set1, set2)); 

    //first create union(set1, set2)
    //create a new array called union_array that contains all values of set1
    //then add values from set2 that are unique to union_array
    //adding to arrays isn't easy.  i would recommend using an ArrayList then converting it back to an array (if your prof allows that)

    //second create intersection(set1, set2)
    //create a new array called intersection_array
    //add every value in set1 that is also in set2.
    //same as before, try to use an ArrayList and convert back to array

    //third, you want to do the "subtraction"
    //remove all cases of intersection_array inside of union_array
    //put all these values in new array:  return_array

    //return return_array;
    return set1; 
}

如果你想获得一些关于获取联合和数组交集的代码,请查看:

http://www.dreamincode.net/forums/topic/170409-finding-the-union-and-intersection-of-two-arrays/