Результаты поиска
Предельный размер очереди в .NET?
У меня есть объект Queue<T>, который я инициализировал до емкости 2, но очевидно, что это просто емкость, и она продолжает расширяться по мере добавления элементов. Есть ли уже объект, который автоматически отменяет запрос элемента при достижении предела, или это лучшее решение для создания моего собственного наследуемого класса?
Сортировка составной коллекции
Таким образом, WPF не поддерживает стандартное поведение сортировки или фильтрации для представлений CompositeCollections, так что было бы лучше всего решить эту проблему.
Существует две или более коллекций объектов различных типов. Вы хотите объединить их в единую сортируемую и фильтруемую коллекцию (без необходимости вручную выполнять сортировку или фильтр).
Один из рассмотренных мною подходов заключается в создании новой коллекции объектов с несколькими основными свойствами, включая те, по которым я хотел бы отсортировать коллекцию, и экземпляр объекта каждого типа.
class MyCompositeObject
{
enum ObjectType;
DateTime CreatedDate;
string SomeAttribute;
myObjectType1 Obj1;
myObjectType2 Obj2;
{
class MyCompositeObjects : List<MyCompositeObject> { }
А затем пройдите через мои две коллекции объектов, чтобы построить новую составную коллекцию. Очевидно, что это немного грубый метод, но он будет работать. Я получил бы все стандартные функции сортировки и фильтрации представлений в моей новой коллекции составных объектов, и я мог бы поместить в нее шаблон данных для правильного отображения элементов списка в зависимости от того, какой тип фактически хранится в этом составном элементе.
Какие есть предложения, чтобы сделать это более элегантным способом?
Что это лучший способ, чтобы выполнить итерации через строго типизированный общего списка?
Как лучше всего перебирать строго типизированный универсальный список в C#.NET и VB.NET?
Преобразование списка в список
У меня есть список целых чисел, List<Integer> , и я хотел бы преобразовать все целочисленные объекты в строки, таким образом, закончив с новым List<String> .
Естественно, я мог бы создать новый List<String> и пройтись по списку, вызывая String.valueOf() для каждого целого числа, но мне было интересно, есть ли лучший (читай: более автоматический ) способ сделать это?
ярлык для создания карты из списка в groovy?
Я бы хотел немного сортанд для этого:
Map rowToMap(row) {
def rowMap = [:];
row.columns.each{ rowMap[it.name] = it.val }
return rowMap;
}
учитывая то, как обстоят дела с GDK, я бы ожидал, что смогу сделать что - то вроде:
Map rowToMap(row) {
row.columns.collectMap{ [it.name,it.val] }
}
но я ничего не видел в документах... я что-то упустил? или я просто слишком ленив?
Страница общей коллекции без Linq
У меня есть объект типа System.Generic.Collections.List(Of MyCustomClass).
Учитывая целочисленные varaibles pagesize и pagenumber, как я могу собрать только одну страницу объектов MyCustomClass ?
Вот что у меня есть. Как я могу улучшить его?
'my given collection and paging parameters
Dim AllOfMyCustomClassObjects As System.Collections.Generic.List(Of MyCustomClass) = GIVEN
Dim pagesize As Integer = GIVEN
Dim pagenumber As Integer = GIVEN
'collect current page objects
Dim PageObjects As New System.Collections.Generic.List(Of MyCustomClass)
Dim objcount As Integer = 1
For Each obj As MyCustomClass In AllOfMyCustomClassObjects
If objcount > pagesize * (pagenumber - 1) And count <= pagesize * pagenumber Then
PageObjects.Add(obj)
End If
objcount = objcount + 1
Next
'find total page count
Dim totalpages As Integer = CInt(Math.Floor(objcount / pagesize))
If objcount Mod pagesize > 0 Then
totalpages = totalpages + 1
End If
Список или BusinessObjectCollection?
До появления универсальных моделей C# все кодировали коллекции для своих бизнес-объектов, создавая базу коллекций, реализующую IEnumerable
IE:
public class CollectionBase : IEnumerable
и тогда они получат свои коллекции бизнес-объектов из этого.
public class BusinessObjectCollection : CollectionBase
Теперь с общим классом списка, кто-нибудь просто использует это вместо этого? Я обнаружил, что использую компромисс двух методов:
public class BusinessObjectCollection : List<BusinessObject>
Я делаю это, потому что мне нравится иметь строго типизированные имена, а не просто передавать списки.
Каков ваш подход?
Как лучше всего сравнить две коллекции в Java и действовать по ним?
У меня есть две коллекции одного и того же объекта, Collection<Foo> oldSet и Collection<Foo> newSet . Необходимая логика заключается в следующем:
- если
fooнаходится в(*)oldSet, но неnewSet, вызовитеdoRemove(foo) - иначе, если
fooнаходится не вoldSet, а вnewSet, вызовитеdoAdd(foo) - в противном случае, если
fooнаходится в обеих коллекциях, но изменен, вызовитеdoUpdate(oldFoo, newFoo) - еще если
!foo.activated && foo.startDate >= now, то звонитеdoStart(foo) - еще если
foo.activated && foo.endDate <= now,doEnd(foo)звоните
( * ) "in" означает совпадение уникального идентификатора, но не обязательно содержимого.
Текущий (устаревший) код выполняет множество сравнений, чтобы вычислить removeSet , addSet , updateSet , startSet и endSet, а затем выполнить цикл для каждого элемента.
Код довольно грязный (отчасти потому, что я уже пропустил некоторую логику спагетти), и я пытаюсь его рефакторировать. Еще немного фоновой информации:
- Насколько я знаю,
oldSetиnewSetна самом деле подкрепленыArrayList - Каждый набор содержит менее 100 элементов, скорее всего, максимум 20
- Этот код вызывается часто (измеряется в millions/day),, хотя наборы редко отличаются
Мой вопрос:
- Если я преобразую
oldSetиnewSetвHashMap<Foo>(порядок здесь не имеет значения), с ключами IDs в качестве ключей, будет ли это облегчать чтение кода и его сравнение? Сколько времени & производительность памяти теряется при преобразовании? - Будет ли повторение двух наборов и выполнение соответствующей операции более эффективным и лаконичным?
Фильтрация коллекций в C#
Я ищу очень быстрый способ отфильтровать коллекцию в C#. в настоящее время я использую универсальные List<object> коллекции, но открыт для использования других структур, если они работают лучше.
В настоящее время я просто создаю новый List<object> и зацикливаюсь на исходном списке. Если критерии фильтрации совпадают, я помещаю копию в новый список.
Есть ли лучший способ сделать это? Есть ли способ фильтровать на месте, чтобы не было необходимости во временном списке?