【问题标题】:Java Array String combinations [duplicate]Java数组字符串组合[重复]
【发布时间】:2016-01-28 20:16:05
【问题描述】:

我需要一些关于 java 代码的帮助,

这是我的代码:

public void showData() {

        int pass = 0;

        /* For first list */
        for(int i = 0; i < first_list.length; i++) {

            if(first_list[pass].toString() != second_list[i].toString()) {
                System.out.println(first_list[i]);

            } else {

            }

        }

        pass++;
    }

输出:

  • 波尔图
  • 阿尔加维

但我不想要这个,我明白通过这样做,我的 for 结束并且不做其他传递.. 我想获得所有可能的组合而不重复单词,我想要的输出是这个:

  • 波尔图
  • 阿尔加维
  • 里斯本
  • 阿尔加维
  • 里斯本
  • 波尔图

这是一个有助于理解的平局:

我怎么能做这样的事情?谢谢!

编辑: 我不是在问如何比较字符串...如果有人可以指出我想要的主题,那会很好,如果不是...那么一些建议会很棒

【问题讨论】:

  • njzk 那个话题,不要帮我做我想做的事,我不是问如何比较字符串......
  • 你需要所有的排列,对吧?在一张纸上一步一步地思考你会如何在逻辑上做到这一点。您可以将第一个元素与第二个元素结合起来。然后是第三个。现在,您如何处理下一次迭代中的下一个元素?然后将其转换为代码。你走在正确的轨道上,但你把事情复杂化了。
  • @user3000019,这可能不是你要问的,但它会帮助你。
  • @user3000019 不管你想做什么,第一个问题是字符串比较。

标签: java combinations


【解决方案1】:

这个问题并不完全清楚,但如果我的理解正确,你会想要这样的:

String[] locations = {"Lisboa", "Porto", "Algarve"};

for (String source : locations) {
    for (String destination : locations) {
        if (!source.equals(destination)) {
            System.out.println(source + " -> " + destination);
        }
    }
}

【讨论】:

  • 非常感谢,这就是我想要的!!
【解决方案2】:

使用一套?

Set<String> mySet = new HashSet<String>();
for(String s:first_list)
  mySet.add(s);

for(String s:second_list)
  mySet.add(s);

for(String s:mySet)
  System.out.println(s);

【讨论】:

  • 为什么会被标记为负数?线程开启器,想要来自两个数组的单一名称集,没有任何重复。
  • 感谢您的帮助,就我而言,shmosel 解决方案是最好的,但感谢您的宝贵时间!我不明白为什么它被标记为负面..
猜你喜欢
  • 2017-09-10
  • 2013-09-15
  • 2016-07-28
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 2020-04-04
  • 2011-09-24
  • 2016-08-04
相关资源
最近更新 更多