/** * 第一种方式: * 实现思路:将字符串通过getBytes方法转换为byte数组,或者通过toCharArray()转换为char数组 * 然后先调用Arrays的sort方法进行排序,再调用Arrays的equels方法判断是否相等; * * @param str1 * @param str2 * @return */ public static boolean equels(String str1, String str2) { byte[] sa1 = str1.getBytes(); byte[] sa2 = str2.getBytes(); Arrays.sort(sa1); Arrays.sort(sa2); return Arrays.equals(sa1, sa2); } /** * 第二种方式: * 实现思路:将其中一个字符串放到一个StringBuffer中,然后遍历另一个String; * 判断另一个String的每个字符在StringBuffer中是否存在,如果有的话,删除StringBuffer中对应的第一个字符; * 遍历结束后,查看StringBuffer的长度是否为0; * * @param str1 * @param str2 * @return */ public static boolean stringSame(String str1, String str2) { // 先判断长度 if (str1.length() != str2.length()) { return false; } // 把str2放到一个StringBuffer, StringBuffer str2Buffer = new StringBuffer(); str2Buffer.append(str2); // 循环字符串1的字符,查看字符串2是否有相同字符,有的话删除 for (int i = 0; i < str1.length(); i++) { char temp = str1.charAt(i); int index = str2Buffer.toString().indexOf(temp); if (index != -1) { str2Buffer.deleteCharAt(index); } else { return false; } } // 删除结束,确认长度为0则相等 if (str2Buffer.toString().length() == 0) { return true; } return false; } public static void main(String[] args) { System.out.println(equels("aa23b235", "23ab235a")); System.out.println(stringSame("aa23b2我35", "23ab235a我")); }