JTuple 1.2.0 正式版发布了,本次更新内容:
1.新增优雅工具类Tuples,实现优雅使用元组,如下:
import static com.github.sd4324530.jtuple.Tuples.tuple; Tuple2<String, Integer> tuple = tuple("test", 123);
完整使用说明,请见:https://git.oschina.net/pyinjava/jtuple/blob/master/README.md
2.删除过期方法Tuple.withList
3.完善测试用例,完善文档
JTuple
Java 语言版本的元组数据类型,实现了元组类型的特性(不可变、 可迭代)以及常用操作方法
轻量级,无依赖,线程安全
元组的意义
元组最重要的意义是用来实现多值返现。 很多时候我们需要返回一组值,更可怕的是这组值的类型可能并不完全一样,比如http请求时,有请求的返回码(int)以及响应报文(String)
对于java人员来说,遇到这种情况时,一般的解决方案是编写一个类,类里只有2个属性,分别是以上2个,然后返回给调用者。是不是有种胸闷的感觉。折腾,造孽啊
或者就返回一个列表,但是因为类型不统一,只能用List<Object>,后续处理的代码的可读性会很差,我相信任何一个技术水平过关或者有职业操守的程序员都不会这么做
元组的出现,就是为了解决这种情况的,很多年轻的语言(Python, Scala...)都内置了元组,本项目就是让Java开发人员也可以享受到元组带来的编程时的便捷和快乐
主要实现
类名 | 描述 |
---|---|
Tuple | 元组抽象,实现元组数据结构以及常用操作方法 |
Tuple0 | 空元组,不包含任何元素 |
Tuple1 | 只包含1个元素的元组 |
Tuple2 | 只包含2个元素的元组 |
Tuple3 | 只包含3个元素的元组 |
Tuple4 | 只包含4个元素的元组 |
Tuple5 | 只包含5个元素的元组 |
TupleN | 包含N个元素的元组 |
元组操作
操作API | 说明 |
---|---|
add | 元组合并 |
foreach | 元组迭代 |
forEachWithIndex | 元组带序号迭代 |
swap | 元组翻转 |
toArray | 元组转成数组 |
toList | 元组转成列表 |
get | 获取元组某一个元素 |
contains | 元组中是否包含某个元素 |
subTuple | 截取子元组 |
equals | 比较2个元组内容是否相同 |
toString | 输出字符串表示的元组,如: (123, 456) |
repeat | 重复元组内的所有元素 |
stream | 将元组转换成流,类似List.stream |
parallelStream | 将元组转换成并行流,类似List.parallelStream |
sort | 将元组列表(数组)进行排序 |
引用来自“柯激情”的评论
liist.get(i) 与 jtuple.get(i) 有何区别 XD引用来自“愚_者”的评论
如果使用Tuple1~Tuple5,也就是创建元组时,明确知道个数,api会很友好,比如Tuple2<String, Integer> tuple = tuple("test", 123);
String s = tuple.frist;
int i = tuple.second;
如果完全把元组当List来用,比如,很大的一个元组,那确实,List也许更合适,当然,TupleN也可以胜任,不过API就和list差不多了。各有使用场景
如果你使用过python,scala等内置元组的语言,你应该会明白😄
引用来自“柯激情”的评论
我用scala 所以在scala map的时候 直接写case (a,b,c) 这样更自然但在java 不能提供这种方便,所以在java里面用这种方式略怪
我这个项目就是希望尽可能的让使用起来不奇怪😥
引用来自“柯激情”的评论
liist.get(i) 与 jtuple.get(i) 有何区别 XD引用来自“愚_者”的评论
如果使用Tuple1~Tuple5,也就是创建元组时,明确知道个数,api会很友好,比如Tuple2<String, Integer> tuple = tuple("test", 123);
String s = tuple.frist;
int i = tuple.second;
如果完全把元组当List来用,比如,很大的一个元组,那确实,List也许更合适,当然,TupleN也可以胜任,不过API就和list差不多了。各有使用场景
如果你使用过python,scala等内置元组的语言,你应该会明白😄
但在java 不能提供这种方便,所以在java里面用这种方式略怪
引用来自“洛阳码农”的评论
支持你,不管别人咋喷你,我觉得你写的挺好的😄引用来自“柯激情”的评论
liist.get(i) 与 jtuple.get(i) 有何区别 XDTuple2<String, Integer> tuple = tuple("test", 123);
String s = tuple.frist;
int i = tuple.second;
如果完全把元组当List来用,比如,很大的一个元组,那确实,List也许更合适,当然,TupleN也可以胜任,不过API就和list差不多了。各有使用场景
如果你使用过python,scala等内置元组的语言,你应该会明白😄