亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中是否有一個類可以保留數據的重復項但不保留數據的順序?

Java中是否有一個類可以保留數據的重復項但不保留數據的順序?

白衣非少年 2023-09-20 14:37:09
我正在處理字謎,所以我只關心字符串中存在的字符,而不關心它們的順序。我尋找合適的 Collection 類但沒有成功。您能否建議任何可以幫助我保留 重復項但忽略順序的課程?
查看完整描述

3 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

您可以使用 aMap<Character,Integer>來計算 a 的每個字符出現的次數String。如果Map兩個Strings 生成的 s 相等,您就會知道相應的Strings 是字謎詞。


例如(這里我使用Map<Integer,Long>而不是Map<Character,Integer>因為它更方便):


String one = "animal";

String two = "manila";

Map<Integer,Long> mapOne = one.chars ().boxed().collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));

Map<Integer,Long> mapTwo = two.chars ().boxed().collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));

System.out.println ("Is anagram? " + mapOne.equals(mapTwo));

輸出:


Is anagram? true


查看完整回答
反對 回復 2023-09-20
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

您可以使用 Google guava 的HashMultiSet.?該equals()方法正是這樣做的:

比較指定對象與此多重集是否相等。如果給定對象也是多重集并且包含具有相同計數的相同元素(無論順序如何),則返回 true。如果 object 是相同大小的多重集,并且對于每個元素,兩個多重集具有相同的計數,則此實現返回 true。


查看完整回答
反對 回復 2023-09-20
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

除了有序的數據結構之外,還可以動態地對數據進行排序。


由于 Unicode 符號、代碼點比 UTF-16 更好char,我將使用 Unicodeint代替:


int[] canonical(String s) {

    return s.codePoints().sorted().toArray();

}


boolean isAnagram(String s, String t) {

    return Arrays.equals(canonical(s), canonical(t));

}


boolean isAnagram(int[] s, String t) {

    return Arrays.equals(s, canonical(t));

}


查看完整回答
反對 回復 2023-09-20
  • 3 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號