我有Point2D类作为基类,为了存储点列表,我通常使用List
,但现在我想在List
中添加额外的方法和一些属性,比如用于打印的ToString方法,基于特定坐标的排序,用于筛选点的特定方法,我不想使用扩展方法。
我创建了一个新的point2dlist
类,它继承了list
类,它在正常情况下工作很好,但是当使用FindAll函数时,它现在返回list
但我希望它返回point2dlist
。我知道我可以编写自己的方法来接受谓词委托,但这是太多的工作了。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleAppTest
{
internal static class Program
{
private static void Main()
{
try
{
var points = new Point2DList();
points.Add(new Point2D(0, 0));
points.Add(new Point2D(10, 0));
points.Add(new Point2D(10, 10));
points.Add(new Point2D(0, 10));
Console.WriteLine(points.ToString());
Point2DList newPoints = points.FindAll((x) => x.X == 10);
}
catch (Exception)
{
throw;
}
finally
{
Console.ReadLine();
}
}
}
public class Point2DList : List<Point2D>
{
public override string ToString()
{
var sb = new StringBuilder();
sb.AppendLine("List of Points");
foreach (var pt in this)
{
sb.AppendLine(pt.ToString());
}
return sb.Remove(sb.Length - 1, 1).ToString();
}
}
public class Point2D
{
public int X { get; set; }
public int Y { get; set; }
public Point2D(int x, int y)
{
X = x;
Y = y;
}
public override string ToString()
{
return $"{X},{Y}";
}
}
}
很少需要从任何集合类型继承,特别是当你只想扩展它,而不是改变它的实现时。因此,我会选择组合而不是继承,而是使用一个字段:
class Points2DList
{
private List<Point2D> _points;
public Points2DList(List<Point2D> points) { _points = points; }
public override string ToString() { ...}
public void Add(Point2D p { _points.Add(p); } // delegate to implementation of your underlying list
public Point2D this[int i] // delegate to implementation of your underlying list
{
get => _points[i];
set => _points[i] = value;
}
public Points2DList FindAll(Predicate<Point2D> P)
{
return new Points2DList(_list.FindAll(p));// delegate to implementation of your underlying list
}
}
通过这种方式,您可以控制您真正想要向客户端公开的功能。使用继承会向外部公开每个公共成员,这可能是您不想要的。例如。虽然您希望允许从列表中删除元素,但您可能不希望启用客户端对其调用clear
。
问题内容: 我需要一种快速的方法来复制表中的DATETIME列并为其赋予新的名称。 我的表中有名为myResults的列myDate,我需要查询以在表中创建一个名为newDate的新列,该列具有与myDate列完全相同的数据。 有没有比做一个明显的两步方法来做一个新列,然后复制所有数据(这是一个大表,我正在寻找最快的方法)更快的方法? 明显的解决方案: 问题答案: 不幸的是,显而易见的解决方案是唯
我有下面提到的表,我想通过查询添加列,这将增加一列到表的值对其他列特定值考虑以下表 在这个表中,在1前面想要文本作为活动,在零(0)前面,我想要它作为列名状态的非活动。
我有这个对象结构,像 mi jasper 报告中的 Java Bean 一样使用, 具有相应和的所有类 当我在jasper报告中创建列表时,我这样定义“作业列表”: 现在我要创建另一个列表,“职责列表”放在“工作列表”上,问题是: 我如何定义数据源以获得要传递到中的相应作业? 我想象这样的事情: 但我不能让它工作
...但我得到: 我不知道如何应用这些信息。首先,我认为我需要为列表声明一些额外的映射(在同一个映射器类中),所以MapStruct知道如何像这样映射列表类型的每个字段: ...但我收到错误消息
我使用文件路径解析 Spark 数据帧,但现在我想将路径与时间一起作为单独的列添加到生成的数据帧中。下面是一个当前的解决方案(pathToDF 是一个帮助器方法): 我正在尝试做这样的事情,但我不确定如何使用Column添加时间列: 实现它的更好方法是什么? 输入自由度: 当前结果: 预期结果:
在我的scala程序中,我有一个dataframe,其中有两列和(类型都为)。除此之外,我有一个先前定义的对象和一些方法和属性。在这里,我想要使用dataframe的当前值和中的属性向dataframe添加一个新列。 例如,如果我有下面的dataframe: 谢谢你。