我在Java中使用scala不可变列表。我想在此列表的中间添加元素。请有人帮我这个吗? 感谢
答案 0 :(得分:6)
让sList
成为Scala列表,让List
成为Scala列表类型,42
添加要素:
final int half = sList.size /2;
final List<Int> first = sList.take(half);
final List<Int> second = sList.drop(half);
final List<Int> result = first.$colon$colon$colon( second.$colon$colon( 42 ) );
答案 1 :(得分:2)
对模糊问题的模糊回答:
有几种方法可以分割不可变列表,例如使用take
和drop
。从部分(包括您的中间元素),您可以组装一个新的不可变List,例如使用:::
,在Java,IIRC中应该称为$colon$colon$colon
。
如果您需要更多详细信息,请添加一些代码。
答案 2 :(得分:0)
嗯......你正在使用一个不可变的列表。 “不可变”这个词的含义是它不能被改变 - 如果有一种方法可以将一个元素添加到这样一个列表的中间,那就是一个bug。
编辑:实际上,有可能在这样的列表中添加元素 - 可能在JVM级别操作相应的数据就可以了 - 但这仍然很糟糕,因为其他所有使用不可变列表的程序期望该列表始终保持不变。