在二维数组中对字符串行进行分组

时间:2012-11-29 18:42:24

标签: java

我有以下问题,任何帮助将不胜感激。假设我们有以下(n x 3)数组:

["Skyfall", "Monday", "21:00",
 "Batman Rises", "Wednesday", "22:30",
 "Skyfall", "Tuesday", "23:00",
 "The Avengers", "Thursday", "22:45",
 "Skyfall", "Monday", "21:00"
 "Batman Rises", "Wednesday", "22:30",
 "Batman Rises", "Wednesday", "22:00",
    .          .         .
    .          .         .
    .          .         .]

每行由三个字符串表示。我想以下面的方式实现一个对公共行进行分组的算法。 算法启动时,首先检查二维数组第一列中的所有值。然后,如果它在那里找到相同的值,它将继续第二列,但它只检查第一步中具有相同值的行。在那之后,它以同样的动机继续第三列。最后,它给出了上述过程找到的行。 例如,对于给定的数组,输出应为:

[“Skyfall”,“Monday”,“21:00”,
   “蝙蝠侠升起”,“星期三”,“22:30”]

你知道我怎么能这样做吗? 非常感谢你!

2 个答案:

答案 0 :(得分:0)

  • 创建一个Movie课程,其中包含三名成员:movieNamedaytime
  • 将每部电影放入一个集合并检查它是否重复,在这种情况下将其添加到重复列表中:
if (!set.add(movie)) { //duplicate
    listOfDuplicates.add(movie);
}

之后,如果您愿意,可以随意将结果放回数组中。

答案 1 :(得分:-1)

以下是我对如何完成它的看法 - http://jsfiddle.net/Pqkxz/1/

我必须遍历对象两次,一次查看每个对象,第二次测试重复项。这是我用来测试重复的代码:

function checkForDuplicate(title, row){
var dup = false;
var index = 0;
for (var movie in TheaterListing) {
   var obj = TheaterListing[movie];
    for (var prop in obj){
        if(prop == "Title" && index != row){ //if not current row
            if (obj[prop] == title) dup = true;            
        }
    }
    index++;
}
return dup;

}