2014-03-05 45 views
1

我是Java编程新手,最近开始处理字符串操作。
任何人都可以建议我一个工作思路来检查字符串是否包含相同的字符集?与具有相同字符或字母的字符串进行比较

例子:

string1="add" so string1 has characters "a,d" 
string2="dad" so string2 has characters "a,d" 
--> they match 

String1="abc" 
string2="abcd" 
--> they don't match 

我不想通过信函比较信

+1

尊敬的罗汉:欢迎来到Stack Overflow。请参阅[游览](http://stackoverflow.com/tour)并访问[帮助中心](http://stackoverflow.com/help)以查找有关如何提出良好问题的信息。恐怕目前形式的问题很快就会结束。 – devnull

+0

你想检查两个字符串是否相等? –

+3

@devnull:这不是出色的书写,但它似乎对我来说很合理。我开始的答案:) –

回答

4

这听起来像你想检查包含在一个字符串中的字符集是一样的集包含在另一个中的字符。这是相当容易实现与Set<Character>

static boolean characterSetsEqual(String text1, String text2) { 
    Set<Character> set1 = toCharacterSet(text1); 
    Set<Character> set2 = toCharacterSet(text2); 
    return set1.equals(set2); 
} 

static Set<Character> toCharacterSet(String input) { 
    Set<Character> set = new HashSet<>(); 
    for (int i = 0; i < input.length(); i++) { 
     set.add(input.charAt(i)); 
    } 
    return set; 
} 

Set<>.equals都完全按照你希望它成为的方式定义:

比较指定对象与此set的相等。如果指定的对象也是一个集合,则两个集合具有相同的大小,并且指定集合中的每个成员都包含在此集合中(或等价地,此集合中的每个成员都包含在指定集合中),则返回true。该定义确保equals方法在设置接口的不同实现之间正常工作。

重要的是要看到,你真的有兴趣在这里是重要的 - 从String转换(这是字符序列)到Set<Character>(有没有内在的顺序,也没有多少的计数每个角色出现的次数)是关键部分。

+2

虽然你的答案会做OP想要的东西,恐怕对于OP而言,在_understanding_方面有很大的帮助。我很抱歉地说,现在的答案看起来像一个_code dump_(假设你开始回答,以便教育某人)。 – devnull

+0

简单而直接的解决方案... –

+0

@devnull:那当然不是*只是*代码转储,即使开始,但现在我已经进一步扩展了它。 –

0

这是一个简单的库,它可以帮助您在begening的字符串上进行低级操作,并且还请查看String类文档,其中还有许多有用的东西。

相关问题