我需要在Java中实现一个返回"Seq"的方法但是我遇到错误,我不知道如何解决它.
java.util.ArrayList cannot be cast to scala.collection.Seq
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的代码
@Override
public Seq<String> columnNames() {
List<String> a = new ArrayList<String>();
a.add("john");
a.add("mary");
Seq<String> b = (scala.collection.Seq<String>) a;
return b;
}
Run Code Online (Sandbox Code Playgroud)
Seq似乎没有提供转换为的可能性scala.collection.JavaConverters.谢谢
我正在尝试生成一个包含增加的反向系列的向量,例如1,2,1,3,2,1,4,3,2,1,5,4,3,2,1.
我尝试使用循环,但我不知道如何堆叠或连接结果.
for (i in 1:11)
{
x = rev(seq(i:1))
print(x)
}
[1] 1
[1] 2 1
[1] 3 2 1
[1] 4 3 2 1
[1] 5 4 3 2 1
[1] 6 5 4 3 2 1
[1] 7 6 5 4 3 2 1
[1] 8 7 6 5 4 3 2 1
[1] 9 8 7 6 5 4 3 2 1
[1] 10 9 8 7 6 5 4 3 2 1
[1] …Run Code Online (Sandbox Code Playgroud) 在zsh中,当我必须使用zsh创建一堆文件时,我通常会执行以下操作:
for x in $(seq 1 1000); do .....; done
Run Code Online (Sandbox Code Playgroud)
这工作得很好,它给我的文件与名foo-1.txt.. foo-1000.txt.
但是,这些文件不排序很好,所以我想零垫的$x变量,从而产生的名称foo-0001.txt.. foo-1000.txt.
如何在zsh中这样做?(和奖金问题,如何在bash中做到这一点?)
据说clojure中的每个集合都是"sequable",但只有list和cons实际上是seqs:
user> (seq? {:a 1 :b 2})
false
user> (seq? [1 2 3])
false
Run Code Online (Sandbox Code Playgroud)
所有其他seq函数首先将集合转换为序列,然后才对其进行操作.
user> (class (rest {:a 1 :b 2}))
clojure.lang.PersistentArrayMap$Seq
Run Code Online (Sandbox Code Playgroud)
我做不到这样的事情:
user> (:b (rest {:a 1 :b 2}))
nil
user> (:b (filter #(-> % val (= 1)) {:a 1 :b 1 :c 2}))
nil
Run Code Online (Sandbox Code Playgroud)
并且必须强制回到具体的数据类型.这对我来说看起来很糟糕,但很可能我还没有得到它.
那么,为什么Clojure的收藏都不能直接实现ISEQ接口和所有序列函数不返回相同的类的对象作为输入对象?
为了在ggplot2图表中设置对数刻度的自定义中断间隔,我从多个序列创建了以下向量.
breaks <- c(seq(2000, 10000, by = 1000),
seq(20000, 100000, by = 10000),
seq (200000, 1000000, by = 100000),
seq (2000000,10000000, by = 1000000),
seq (20000000,100000000, by = 10000000))
Run Code Online (Sandbox Code Playgroud)
这是快速而又脏的,但它在日志间隔内给出了2,000到100,000,000的所需休息时间.
> breaks
[1] 2e+03 3e+03 4e+03 5e+03 6e+03 7e+03 8e+03 9e+03 1e+04 2e+04 3e+04 4e+04
[13] 5e+04 6e+04 7e+04 8e+04 9e+04 1e+05 2e+05 3e+05 4e+05 5e+05 6e+05 7e+05
[25] 8e+05 9e+05 1e+06 2e+06 3e+06 4e+06 5e+06 6e+06 7e+06 8e+06 9e+06 1e+07
[37] 2e+07 3e+07 4e+07 5e+07 6e+07 7e+07 8e+07 9e+07 …Run Code Online (Sandbox Code Playgroud) 在Scala文档中,集合同时定义了.seq和.toSeq方法.它们之间有什么区别,为什么它们都存在?我无法通过阅读Scala集合文档来解决这个问题.
(对不起,很长的帖子,直接跳到问题,见底部)
(更新:如果您正在重新访问,请参阅标记为"更新"的部分;)
我让自己更好地了解F#序列引擎盖下发生了什么.我需要优化的任务包括将字符串转换为Unicode代码点序列,我想知道是否可以在不牺牲太多性能的情况下将我们使用的可变循环替换为不可变循环.
其中一个挑战是返回的序列与输入序列的长度不同,因为代理对一起返回一个整数.这是原始代码,如下所示:
let stocp0(value: string) : seq<int> =
let pos = ref 0
seq {
while !position < value.Length do
let c = System.Char.ConvertToUtf32(value, !pos)
pos := !position + if c >= 0x10000 then 2 else 1
yield c
}
Run Code Online (Sandbox Code Playgroud)
for-do我认为最简单的方法是将其转换为for-do循环(不是for-for-do循环,它们有太多的额外开销):
let inline stocp1(value: string) =
seq {
for i = 0 to value.Length - 1 do
if(not <| Char.IsLowSurrogate(value.[i]))
then yield Char.ConvertToUtf32(value, i)
}
Run Code Online (Sandbox Code Playgroud)
这比上面的可变对应物慢了3.2倍.比我想象的更高的因素.
Seq.mapi由于字符串已经是一个序列(好的,有一个IEnumerable<char>包装器)我想用它来Seq模块中的现有序列函数,希望这可能会带来更好的性能:
let inline stocp2(value: …Run Code Online (Sandbox Code Playgroud) Bash允许我写声明,
$ for i in {h..k} ; do echo $i ; done
Run Code Online (Sandbox Code Playgroud)
但是zsh只允许数字列表扩展,例如{8..13}.
什么是最好的解决方法?像字符seq的东西......
我正在学习bash脚本.在探索数学函数时,我遇到了一个计算pi值的命令.
seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l
Run Code Online (Sandbox Code Playgroud)
虽然我理解基本的seq命令是如何工作的,但我无法理解上述命令是如何工作的.任何人都可以澄清它是如何工作的.