Как протестировать, если Хеш-таблица C# содержит определенную пару ключ/значение?

Это потому, что числа ниже 10 должны быть дополнены нулями, но это не так.

Вы можете использовать функцию padStart для достижения ожидаемого результата - добавить начальный 0 символ, если длина числа меньше 2. Я немного изменил ваш код, но все, что вам нужно, это использовать .toString().padStart(2, '0') число.

var today = new Date();

var date = [
  today.getFullYear(),
  today.getMonth() + 1,
  today.getDate(),
].map((value) => value.toString().padStart(2, '0')).join('-');

var time = [
  today.getHours(),
  today.getMinutes(),
  today.getSeconds(),
].map((value) => value.toString().padStart(2, '0')).join(':');;


var dateTime = date + ' ' + time;
console.log(dateTime);

7
задан yhw42 24 November 2011 в 07:03
поделиться

8 ответов

Попробуйте это:

Hashtable check_for_duplicates = new HashTable();
foreach (object item in items)
{
    if (check_for_duplicates.ContainsKey(item["ItemID"]) &&
        check_for_duplicates[item["ItemID"]].Equals(item["Path"]))
    {
        //throw error
    }
}

Кроме того, если Вы используете.NET 2.0 или выше, рассматриваете использование Дженериков, как это:

List<Item> items; // Filled somewhere else

// Filters out duplicates, but won't throw an error like you want.
HashSet<Item> dupeCheck = new HashSet<Item>(items); 

items = dupeCheck.ToList();

На самом деле я просто проверил, и похоже, что HashSet является.NET 3.5 только. Словарь более подходил бы для 2,0:

Dictionary<int, string> dupeCheck = new Dictionary<int, string>();

foreach(Item item in items) {
    if(dupeCheck.ContainsKey(item.ItemID) && 
       dupeCheck[item.ItemID].Equals(item.Path)) {
        // throw error
    }
    else {
        dupeCheck[item.ItemID] = item.Path;
    }    
}
11
ответ дан 6 December 2019 в 06:38
поделиться

Если Вы использовали Dictionary вместо этого, TryGetValue метод помог бы. Я не думаю, что существует действительно лучший путь к в значительной степени устаревший Hashtable класс.

object value;
if (dic.TryGetValue("key", out value) && value == thisValue)
  // found duplicate
4
ответ дан 6 December 2019 в 06:38
поделиться
if (check_for_duplicates.ContainsKey(item["ItemID"]) &&
    check_for_duplicates[item["ItemID"]] == item["Path"])
{
    //throw error
}
3
ответ дан 6 December 2019 в 06:38
поделиться

Почему бы не использовать a Dictionary вместо этого?

Это бросит ArgumentException, при попытке Add ключ, который уже существует в Dictionary.

Тем путем можно поймать дубликат в данный момент, он добавляется, вместо того, чтобы выполнить a check_for_duplicates тест позже.

2
ответ дан 6 December 2019 в 06:38
поделиться

ContainsKey является лучшим методом.

Если бы Вы не вынуждены использовать.NET 1.1, я использовал бы Словарь, представленный в.NET 2.0.

Это намного лучше, чем Хеш-таблица от производительности и со строгим контролем типов.

Dictionary<string, int> betterThanAHash = new Dictionary<string, int>();

betterThanAHash.ContainsKey("MyKey");
3
ответ дан 6 December 2019 в 06:38
поделиться

Это отчасти зависит, что массив элементов..., Вы захотите что-то как:

check_for_duplicates.ContainsValue(item["Path"]);

Предположение, что объект является некоторой формой поиска. Действительно необходимо бросать объект или использовать систему типов для на самом деле доступа любые значения через индекс.

1
ответ дан 6 December 2019 в 06:38
поделиться

Вы не сказали, какую версию вещей вы использовали. Есть ли причина, по которой вы должны использовать Hashtable против HashSet? Вам не нужно было бы проверять наличие дубликатов, если ваша структура данных их не допускает. См. Также:

http://www.vcskicks.com/csharp_data_structures2.html

Кроме этого, на вопрос о том, как выполнить то же самое в Hashtable, уже дан ответ здесь. Я просто указываю на то, что вам не нужно выполнять всю патологическую проверку, если вы запрещаете это в первую очередь.

1
ответ дан 6 December 2019 в 06:38
поделиться
Hashtable check_for_duplicates = new HashTable();

foreach (object item in items) 
{
    if (check_for_duplicates.ContainsKey(item["ItemID"]) && check_for_duplicates[item["ItemID"]] == item["Path"])
    {
        //throw error
    } 
}

Я действительно полагаю, что это - то, что Вы ищете.

РЕДАКТИРОВАНИЕ - Похоже, я был избит к перфорации :P

2
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: