java中 pair <t>什么意思

Python09

java中 pair <t>什么意思,第1张

表示泛型。

比如说,你要创建一个List对象,可以以如下方法:

public List<String>list = new ArrayList<String>()

如此,你添加到list中的元素,就只能是String,如果你添加别的,就会报错,因为它和你创建list时规定的String不一致。

ArrayList部分源码

public class ArrayList<E>…

泛型的意思就是,这个E可以是任何类,但是当你创建时指定为特定的类,比如说String,那么它就只能传入String。

这要看类型,如果用的是C++里面的string类,那么只需要用上重载符号 + 就行了:

例如:

string s1="12345890",s2="abcdedg"

s1+=s2//把s2连接在s1尾部

cout<<s1<<endl//输出结果是"12345890abcdedg",不含引号

如果是C语言里面的字符数组,可以用strcat(char *s1,char *s2)函数,功能是把,s2连接在s1尾部:

例如:

char s3[]="12345678",s4[]="abcded"

char s5[100]

strcat(s5,s3)strcat(s5,s4)//功能如上所说

cout<<s5<<endl//输出结果是"12345678abcded",不含引号

   最开始说一下我使用的解决办法:Pair 和 Triple

   偶然看到这个问题,浏览量也很大,还是写一下我认为最好的办法吧,跟大家交流一下。

说一下前面的人答的方案,都可以解决问题,但是觉得不太好。您要是说 可以解决问题就行,那我无话可说。写代码如果只是为了完成任务,不考虑实现是否优雅 和咸鱼有什么区别呢。

数组明显不合适,数组适合放同一类型的数据,当然,你可以使用List<Object>,用Object 放结果,调用方需要知道Object的实际类型并做强制转换,不够优雅,差评

Map<String,Object>是一种能解决问题的做法,使用Object 来放结果也存在调用方需要知道其实际类型并做强转的问题,用key 作区分,方法调用者需要知道方法内部的key ,即使使用全局变量做key 也不够优雅

自定义对象,新建一个类,例如 public class DoubleResult<A, B>{getterallArgsConstructor}、public class TripleResult<A, B, C>{getterallArgsConstructor

} ,效果棒棒的

   接下来要说的 Pair 和Triple 就是上面第三种方案的实现。org.apache.commons.lang3.tuple.Pair,org.apache.commons.lang3.tuple.Triple 是commons-lang包里的两种元组类型。Pair<L,R>可以存两个数据,Triple<L,M,R>可以存三个,再多 那么考虑一下你的方法是否可以拆一下。

  简单说一下他们的用法吧。

Pair 初始化:

Pair.of(L left, R right)

例:Pair.of("a","b")

或:

Pair<Object,Object> pair = new Pair<Object, Object>() {

 @Override

   public Object getLeft() {

      return null

   }

   @Override

   public Object getRight() {

      return null

   }

   @Override

   public Object setValue(Object value) {

      return null

   }

}

Triple 初始化:

Triple.of(L left, M middle, R right)

或:

Triple<Object, Object, Object> triple = new Triple<Object, Object, Object>() {

      @Override

      public Object getLeft() {

         return null

      }

      @Override

      public Object getMiddle() {

         return null

      }

      @Override

      public Object getRight() {

         return null

      }

   }

Pair 获取内容:

pair.getKey()

pair.getValue()

Triple 获取内容:

triple.getLeft()

triple.getMiddle()

triple.getRight()

另外org.apache.commons.lang3.tuple 包下还有ImmutablePair、ImmutableTriple、MutablePair、MutableTriple 分别对应两种结构的不可变和可变类型,大家可以自行探索。