我的問題是我怎麼會不允許重複值到數組中?例如,我有一個程序,應該採取10到100之間的五個用戶輸入值,並將它們放入一個數組中。此外,它應該告訴用戶當前正在輸入的值是否與當前在數組中找到的值相同。如果是這樣,它不應該記錄該值,並且在五個輸入的末尾,它應該只輸出具有唯一值的數組。例如,用戶輸入:12,16,30,30,99,最終輸出將是:12,16,30,99。我將如何消除重複項?如何不允許重複值到數組中?
回答
一個簡單的方法就是將每個輸入存儲到一個Set
中,因爲如果它已經存在,它將不會添加數據。
一個不包含重複元素的集合。更正式地說,集合 不包含元素對e1和e2,使得e1.equals(e2)和 中的大多數爲null元素。正如其名稱所暗示的那樣,該接口模型 是數學集抽象。
請注意,add
方法將返回true,如果該集合尚未包含指定的元素,如果它允許記錄錯誤消息更容易。
if(!yourSet.add(input))
System.out.println("Already exist.");
如果你看看HashSet
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
的map
方法的源代碼,你會發現,一切都存儲在HashMap
,然後在每次添加,返回值將是,如果真put
調用返回null,如果沒有此鍵的先前映射,將會發生這種情況。
PRESENT
對象只是一個虛擬值,可以正確使用put
方法。
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
如果你真的不能使用Set
,在這裏你怎麼能做到這一點:
- 定義,這將是一個標誌標記,如果值是平等的或不是一個布爾值。
- 每次輸入時,都會循環訪問數組的所有數據。
- 在每次迭代中,只有在數據相等的情況下才將標誌設置爲true。
確保您的循環停止循環時,布爾值被設置爲true
for(int i = 0; !flag && i < array.length; i++)
- 外循環只有在標誌的值爲false添加數據。
- 將所有這些放在另一個讀取所有用戶輸入的循環中,直到輸入一個sentinel value。
爲什麼downvote? – 2015-03-02 22:54:55
因爲一個Set是適當的數據結構。請看我的回答 – hd1 2015-03-02 22:56:30
@ hd1這是正確的..編輯。 – 2015-03-02 22:58:19
使用Set:
Set<Integer> aSet = new HashSet<Integer>();
aSet.add(12);
aSet.add(16);
aSet.add(30);
aSet.add(30);
aSet.add(99);
for (Integer number:aSet) {
System.err.print(number+", ");
}
System.err.println();
這將打印出12, 16, 30, 99,
- 1. 不允許將重複元素插入到JavaScript數組中
- 2. 的NSMutableArray:如何允許重複的值
- 3. HashSet如何不允許重複?
- 4. ng不允許重複重複
- 5. mlogit重複'row.names'不允許
- 6. 如何修復允許重複
- 7. 如何修復logstash/jruby中的「不允許重複擴展」?
- 8. Hashset允許重複?
- 9. HashMap允許重複?
- 10. HashSet的犯規允許重複,但如何編寫邏輯允許重複
- 11. 在UI選擇組件中允許重複值
- 12. 如何在ModelMultipleChoiceField中允許重複的值
- 13. 如何允許在Irony.NET重複
- 14. Google SDTT中的錯誤:「網址的重複值不被允許。」
- 15. 如何在ZF2重複接受的數據中允許Doctrine
- 16. 如何允許在sql數據庫中保存重複鍵
- 17. D3JS條形圖:如何允許重複的x軸標籤值?
- 18. has_and_belongs_to_many允許沒有重複
- 19. 允許重複使用options_for_select
- 20. VBA - 允許重複項
- 21. Mysql查詢,允許重複
- 22. 轉換行允許重複
- 23. 如何不允許負數?
- 24. 以下NerdDinner教程,不允許重複
- 25. 不允許重複的功能? (C++)
- 26. MSBuild.ILMerge.Task不允許重複類型
- 27. 重複記錄不應該被允許
- 28. 的iOS重複記錄不允許
- 29. 番石榴Maps.uniqueIndex不允許重複
- 30. 插入記錄,而不允許重複
通過使用'Set'。 – 2015-03-02 22:26:09
你有沒有考慮過HashTable?他們在這個確切的任務中非常快速和高效:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Hashtable.java – 2015-03-02 22:27:06
我必須自己寫代碼,沒有什麼可以使用的。 – Person123 2015-03-02 22:28:23