本文整理汇总了C#中Bucket.Add方法的典型用法代码示例。如果您正苦于以下问题:C# Bucket.Add方法的具体用法?C# Bucket.Add怎么用?C# Bucket.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bucket
的用法示例。
在下文中一共展示了Bucket.Add方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
public override BucketList Run()
{
var result = new BucketList();
var generalizedBucketList = base.Run();
foreach (var bucket in generalizedBucketList)
{
var privateBucket = new Bucket();
foreach (var tuple in bucket)
{
if (Int32.Parse(tuple.GetValue(tuple.GetNumberOfAttributes() - 1)) == 1)
{
tuple.RemoveAttribute(tuple.GetNumberOfAttributes() - 1);
privateBucket.Add(tuple);
}
if (privateBucket.Count > 0)
privateBucket.node = bucket.node;
}
if (privateBucket.Count > 0)
result.Add(privateBucket);
}
return result;
}
示例2: NodeReplaceTest
public void NodeReplaceTest()
{
engine.TimeOut = TimeSpan.FromMilliseconds(25);
ManualResetEvent handle = new ManualResetEvent(false);
Bucket b = new Bucket();
for (int i = 0; i < Bucket.MaxCapacity; i++)
{
Node n = new Node(NodeId.Create(), new IPEndPoint(IPAddress.Any, i));
n.LastSeen = DateTime.UtcNow;
b.Add(n);
}
b.Nodes[3].LastSeen = DateTime.UtcNow.AddDays(-5);
b.Nodes[1].LastSeen = DateTime.UtcNow.AddDays(-4);
b.Nodes[5].LastSeen = DateTime.UtcNow.AddDays(-3);
engine.MessageLoop.QuerySent += delegate(object o, SendQueryEventArgs e)
{
if (!e.TimedOut)
return;
b.Nodes.Sort();
if ((e.EndPoint.Port == 3 && nodeCount == 0) ||
(e.EndPoint.Port == 1 && nodeCount == 1) ||
(e.EndPoint.Port == 5 && nodeCount == 2))
{
Node n = b.Nodes.Find(delegate(Node no) { return no.EndPoint.Port == e.EndPoint.Port; });
n.Seen();
PingResponse response = new PingResponse(n.Id, e.Query.TransactionId);
DhtEngine.MainLoop.Queue(delegate
{
//System.Threading.Thread.Sleep(100);
Console.WriteLine("Faking the receive");
listener.RaiseMessageReceived(response, node.EndPoint);
});
nodeCount++;
}
};
ReplaceNodeTask task = new ReplaceNodeTask(engine, b, null);
// FIXME: Need to assert that node 0.0.0.0:0 is the one which failed - i.e. it should be replaced
task.Completed += delegate(object o, TaskCompleteEventArgs e) { handle.Set(); };
task.Execute();
Assert.IsTrue(handle.WaitOne(4000, false), "#10");
}
示例3: Run
public override BucketList Run()
{
var result = new BucketList();
var generalizedBucketList = base.Run();
var genPerm = GetBestPermutedTable(generalizedBucketList);
foreach (var bucket in genPerm)
{
//if any of the bucket is null, it means that it is not delta-present, k has to be increased
if (bucket == null) return null;
var privateBucket = new Bucket();
foreach (var tuple in bucket)
{
if (Int32.Parse(tuple.GetValue(tuple.GetNumberOfAttributes() - 1)) == 1)
{
tuple.RemoveAttribute(tuple.GetNumberOfAttributes() - 1);
privateBucket.Add(tuple);
}
if (privateBucket.Count > 0)
privateBucket.node = bucket.node;
}
if (privateBucket.Count > 0)
{
foreach (int i in qid)
privateBucket.PermuteValues(i);
result.Add(privateBucket);
}
}
return result;
}
开发者ID:tothbalazs0920,项目名称:DataAnonymizationLibrary,代码行数:31,代码来源:GeneralizationAndPermutationConbined.cs
示例4: ConvertDataTableToBucket
public Bucket ConvertDataTableToBucket(DataTable dt)
{
Bucket bucket = new Bucket();
foreach (DataRow row in dt.Rows)
{
var tuple = new data.Tuple();
tuple.SetQid(qid);
foreach (DataColumn column in dt.Columns)
{
string value = row[column].ToString().Trim();
tuple.AddValue(value);
}
bucket.Add(tuple);
}
return bucket;
}
示例5: FindStrictSplit
/// <summary>
/// Strict partitioning step of the Mondrian algorithm.
/// </summary>
/// <returns>Returns true, if it is possible to split the bucket,
/// false otherwise.</returns>
private bool FindStrictSplit(Bucket bucket, List<IHierarchy> hierarchies, int hierarchyIndex)
{
Node originalNode = CopyNode(bucket.node);
Node specializedNode = CopyNode(bucket.node);
int level = specializedNode.generalizations[hierarchyIndex];
if (level != 0)
specializedNode.generalizations[hierarchyIndex] = level - 1;
else
return false;
bucket.node = CopyNode(specializedNode);
Bucket specializedEQClass = GeneralizeBucket(bucket, hierarchies);
int dimension = hierarchies[hierarchyIndex].GetQid();
foreach (var splittingValue in GetDistinctValues(specializedEQClass, dimension))
{
Bucket right = new Bucket(), left = new Bucket();
foreach (var t in specializedEQClass)
{
if (t.GetValue(dimension).Equals(splittingValue))
left.Add(t);
else
right.Add(t);
}
// If the left has the same size as the original eq, maybe it is possible to release more generalizations.
left.node = CopyNode(specializedNode);
if (left.Count == bucket.Count)
{
queue.Enqueue(left);
return true;
}
Node leftNode = left.node;
var generalizedRight = new Bucket();
generalizedRight.node = CopyNode(originalNode);
//generalize back the right side/the rest
if (right.Count > 0)
{
if (right.HasDistinctValuesAt(dimension) != -1)
{
right.node = CopyNode(originalNode);
generalizedRight = GeneralizeBucket(right, hierarchies);
}
else
{
right.node = CopyNode(specializedNode);
generalizedRight = right;
generalizedRight.node = CopyNode(specializedNode);
}
}
if (IsAnonymous(left) && IsAnonymous(generalizedRight))
{
queue.Enqueue(generalizedRight);
queue.Enqueue(left);
return true;
}
}
bucket.node = CopyNode(originalNode);
return false;
}
示例6: GeneralizeBucket
/// <summary>
/// Generalizes or specializes the input bucket according to the given hierarchy
/// and hierchy level that is stored inside the hierarchy.
/// </summary>
/// <returns>Returns the specialized or generalized version of the input Bucket.</returns>
protected Bucket GeneralizeBucket(Bucket bucket, List<IHierarchy> hierarchies)
{
Bucket newEq = new Bucket();
for (int i = 0; i < hierarchies.Count; i++)
{
hierarchies[i].SetLevel(bucket.node.generalizations[i]);
}
foreach (data.Tuple tuple in bucket)
{
//I suppose that the dimension of id is 0
int id = Convert.ToInt32(tuple.GetValue(0));
newEq.Add(idHashIndex[id]);
}
var generalizedEq = newEq.Generalize(hierarchies);
Node node = CopyNode(bucket.node);
generalizedEq.node = node;
return generalizedEq;
}