例如 field = [] //python 列表
predefinedVars = [n, t, q, field]
n, t, q 均为 int
还有 tuple (predefinedVars, int)
像上面的 predefinedVars 和元组 这些用 java 该怎么表示?
1
gzk329 OP import net.mindview.util.FourTuple;
new FourTuple<A, B, C, D>(a, b, c, d); 或者这个包能用吗? |
2
Rwing 2020-12-18 11:04:24 +08:00
C#欢迎你
var predefinedVars = Tuple.Create(n, t, q, field); |
3
zydxn 2020-12-18 11:08:24 +08:00
Python 的列表对应 Java 的 List (或者 Deque,如需要从两端操作的话),Java 没有元组,通过 List 的一些实现类可以实现不支持修改。
List<Integer> predefinedVars = Arrays.asList(1, 2, 3); List<Integer> tuple1 = List.of(1, 2, 3); List<Integer> tuple2 = Collections.unmodifiableList(predefinedVars); |
4
gzk329 OP //
// Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package net.mindview.util; public class TwoTuple<A, B> { public final A first; public final B second; public TwoTuple(A a, B b) { this.first = a; this.second = b; } public String toString() { return "(" + this.first + ", " + this.second + ")"; } } 跟我想的不大一样。。。 |
5
Rwing 2020-12-18 11:19:18 +08:00
我错了,C#还有个语法糖可以直接这样:
var predefinedVars = (n, t, q, field); |
6
INCerry 2020-12-18 11:19:23 +08:00
C#欢迎你
int n = 1; int t = 2; int q = 3; var field = new []{4, 5, 6}; var predefinedVars = (n, t, q, field); System.Console.WriteLine($"n:{predefinedVars.n}"); System.Console.WriteLine($"t:{predefinedVars.t}"); System.Console.WriteLine($"q:{predefinedVars.q}"); System.Console.WriteLine($"field:[{string.Join(',',predefinedVars.field)}]"); 在线运行结果: https://sharplab.io/#v2:EYLgtghgzgLgpgJwDQxAgrgOwD4EtMwAEmhAvIQIwDcAsAFD5FHkBMtDBhAjmYQMzsAbhASEAZrjgAbACa9McAO6EA2gF0A3gBYkhAKy6AbAF8hIwgAcEcGXAkKZANRFReACky6YurronSZAEp2egABCgA6cIBONwASACJMEA0rGzt8G2cEKAjMYwTgsMiY+ITUVOtbeyyXCJgCorpwqIpYxK4UtOrMpzquRvYW0sT/WRAVDXCABgiAKQB7fDcAciQ17oyHbNyxoOM1QqogA |
7
Cbdy 2020-12-18 11:35:11 +08:00 via Android
用 java.util.List
|
8
Jrue0011 2020-12-18 11:55:35 +08:00
看起来你像是在看 Thinking in Java 并用了它的包
|
10
gzk329 OP @Jrue0011 不是 哈哈 那个 TwoTuple 是我搜到的 我想写的是门限签名 只找到了 python 版的 后来找到百度的 go 版了
|
12
zzl22100048 2020-12-18 21:42:27 +08:00 via iPhone
元组用 vavr
|
13
mmdsun 2020-12-19 01:03:17 +08:00 via Android
tuple 用不可变 list 代替就行。
或者用 apache common Pair 包这个里面有 tuple 列表合并: Stream.of(list1,list2) .flatMap(x->x.stream()) .collect(ToList()) 这种类似于 js 的扩展运算符?好像 Java 不支持。 |
14
dingwen07 2020-12-19 04:29:09 +08:00
既然知道每个位置的类型应该可以从 Object 转型
|