如何构建和比较数组与另一个数组?

时间:2014-06-06 11:50:27

标签: java arrays list comparison iteration

我有一个ArrayList包含从数据库中检索到的字符串。字符串是博客各个帖子的标签,例如:

video, java, php, xml,

css, java, foo, bar, 

xml, php, foo, bar, dog

我试图遍历列表。用逗号将每个字符串拆分成一个数组,并检查我的uniqueTag数组是否包含split数组中的元素。如果没有,请将其添加到uniqueTag数组。

这是我有多远:

List<String> tagList = conn.getAllTags();
String[] uniqueTags;
for(String item: tagList){
    // split the row into array of comman seperated elements
    String[] splitItem = item.split(",");

    for(int i=-1; i<=splitItem.length; i++){
        // compare this element with elements in uniqueTags
        // and if it doesn't exit in uniqueTags
        // add it.
    }
}

如何比较并动态构建uniqueTags数组?

3 个答案:

答案 0 :(得分:3)

我会使用Set<String>来防止重复值。

有些事情:

Set<String> uniques = new HashSet<String>();
for(String item: tagList){
    // split the row into array of comman seperated elements
    String[] splitItem = item.split(",");
    for (String item: splitItem) {
        uniques.add(item.trim()); // trimming whitespace and adding to set

...

答案 1 :(得分:1)

你为什么不尝试这样的事情。

创建List<String> splitIteams拆分项并执行

List<String> distinct = splitItems.stream().distinct().collect(Collectors.toList());
System.out.printf("Split Items : %s,  Distinct list : %s ", splitItems, distinct);

编辑 - 删除了一个额外的%s

答案 2 :(得分:0)

public static void compareArrays(int[] array1, int[] array2) {
    boolean b = true;
    if (array1 != null && array2 != null){

      if (array1.length != array2.length)
          b = false;
      else
          for (int i = 0; i < array2.length; i++) {
              if (array2[i] != array1[i]) {
                  b = false;    
              }                 
        }
    }else{
      b = false;
    }
    System.out.println(b);
}