在Java中从泛型类读取多个嵌入变量

在Java中从泛型类读取多个嵌入变量,java,list,generics,tuples,Java,List,Generics,Tuples,从本质上说,我的任务是编写两个方法:一个zip方法将包含两个通用反对列表的通用元组转换为由上述列表的元素组成的元组列表,另一个解压方法在另一个方向执行相同的操作。即: ({1, "banana", true}{asgard, 5.21e, "stupidhomework"}) => unzip {(1, asgard)("banana",5.21e)(true,"stupidhomework")} => zip ({1, "banana", true}{asgard, 5.21e,

从本质上说,我的任务是编写两个方法:一个zip方法将包含两个通用反对列表的通用元组转换为由上述列表的元素组成的元组列表,另一个解压方法在另一个方向执行相同的操作。即:

({1, "banana", true}{asgard, 5.21e, "stupidhomework"})
=> unzip
{(1, asgard)("banana",5.21e)(true,"stupidhomework")}
=> zip
({1, "banana", true}{asgard, 5.21e, "stupidhomework"})
更复杂的是:该列表是一个简单链接的不可变的通用列表,具有以下结构

List<T>
public final T       head;
public final List<T> tail;
列表
公共最终T形头;
公开最终名单;
…元组也是同样通用的;元组的两个元素实际上可以是任何内容:

public class Tuple<A, B> {
public final A a;
public final B b;
公共类元组{
公开决赛A;
公开决赛B;
所以我的问题是:我不知道如何在第二层找到元素。例如,通常,我会这样做-

   public static<A, B extends List> List unzip(Tuple<A, B> ListenTuple){
        List TupelnListe = new List(new Tuple(ListenTuple.a.head, ListenTuple.b.head));
公共静态列表解压(Tuple ListenTuple){
List tupelnlist=新列表(新元组(ListenTuple.a.head,ListenTuple.b.head));
-要获取我需要的元素,需要两层。不幸的是,由于Tuple是泛型的,它不知道ListenTuple。a必须是一个列表,因此有一个头部。类似的问题出现在zip中,从Tuple中获取a和b。哦,由于一些愚蠢的任意原因,我不允许进行类型转换,尽管我不确定这是如何实现的他会帮助我的

…基本上,有人能给我一个如何开始的指示吗?他们基本上在本周的课堂上把我们扔进了泛型中,没有人得到它。如果有任何帮助,我们将不胜感激。

这行得通吗

public static<A, B> List zip(Tuple<List<A>, List<B>> ListenTuple){
publicstaticlist-zip(Tuple-ListenTuple){
所以A和B是列表的元素,A,B现在是列表


<>我比较熟悉C++,所以不知道这些差异是否阻止了这个问题。

< p>我建议这些签名:

public static <A, B> List<Tuple<A, B>> zip(Tuple<List<A>, List<B>> x);
public static <A, B> Tuple<List<A>, List<B>> unzip(List<Tuple<A, B>> x);
公共静态列表zip(Tuple x);
公共静态元组解压(列表x);

看看你是否能从那里找到答案。

不应该解压缩一个元组列表,而不是一个列表元组。我认为这可能已经做到了!至少不再有错误消息。我会完成我的实现,看看htat是否能解决它。@JonahStephenSwersey太棒了!