【问题标题】:String Comparison Java字符串比较 Java
【发布时间】:2012-06-28 02:38:21
【问题描述】:

我有一组正在输出的锁组合。我想确保没有重复组合。这些组合不仅仅是整数。为了格式简单,我将它们全部转换为字符串。允许我循环和比较每个字符串以便没有重复的代码行是什么?有任何想法吗?例如二维数组

谢谢。

【问题讨论】:

  • 你是如何存储收藏的?它是java.util.List 的子类吗?
  • 是实时输入或从文件等输入的锁组合
  • 如果您想要最简单的解决方案,请尝试将它们添加到Set(在这种情况下HashSet 可能更好)。它可能不是最快的解决方案,但它应该足够快并且很容易实现。
  • 如何从字符串获得二维数组?你打电话给split
  • 这个集合存储在什么地方?可以是数组、ArrayListHashMap等。

标签: java string multidimensional-array comparison


【解决方案1】:

将您的锁组合存储在一组中可能会更容易。这将更容易确保它们是独一无二的。

这也会快得多,因为您不需要将每个字符串与数据集中的所有其他字符串进行比较...

【讨论】:

  • 很抱歉,我应该指定锁定组合的数量取决于用户输入。还能成套存放吗?
【解决方案2】:

通过Arrays.asList(T... a) 将每个组合封装为一个列表,以保持它们的顺序并将它们存储在HashSet 中,以确保contains(Object o) 上的唯一性和恒定的时间性能,以确定它是否已经存在。

import java.util.Arrays;
import java.util.List;
import java.util.HashSet;

public class UniqueLocks {
    public static void main (String[] args) {
        List lock1 = Arrays.asList("1", "22", "333");
        List lock2 = Arrays.asList("a", "bb", "ccc");
        List lock3 = Arrays.asList("eee", "bbb", "ccc");

        HashSet uniqueLocks = new HashSet(Arrays.asList(lock1, lock2, lock3));

        List duplicateLock = Arrays.asList("1", "22", "333");

        if (uniqueLocks.contains(duplicateLock)) {
            System.out.println("Lock [" + duplicateLock + "] already present.");
        }
    }
}

【讨论】:

    【解决方案3】:

    不确定您打算使用哪种语言进行此操作,但您可以检查两个字符串在 C# 中是否具有相同的值,就像这样

    String myString = "Hello World!"; 
    String myString2 = "Hello World!"; 
    
    if(myString.equals(myString2)) {
        //do something cause we have a match
    
    }
    

    如果你有一个字符串数组,你可以遍历它们。

    它在 java、vb.net 等其他语言中非常相似。

    编辑:在我开始写答案后添加了 java 标记.. 抱歉

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多