JAVA实现两个时间list时间段的排列。现在有2个list,list1是开始时间,list2是结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA实现两个时间list时间段的排列。现在有2个list,list1是开始时间,list2是结相关的知识,希望对你有一定的参考价值。

束时间。现在想将这2个list整合一下,变成一个数组list,这个数组list存的是这前2个list的排序。

存的是这前2个list的排序?没有听懂哦。你的意思是不是想合并成一个list后,原先数据的排列顺序并没有改变。如果是这个样子的话,你可以参考下面这段代码:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class Test 
    List list1 = new ArrayList();
    List list2 = new ArrayList();
    Test() 
        list1.add("关羽");
        list1.add("张飞");
        list1.add("黄忠");
        list1.add("马超");
        list2.add("关羽");
        list2.add("张辽");
        list2.add("徐晃");
        list2.add("许褚");
        list2.add("夏侯渊");
    
    public void show(List list) 
        Iterator it;
        for (it = list.iterator(); it.hasNext();)
            System.out.println(it.next());
    
    /** 将2个List拼成一个List,是所有List的合并,循环打印 */
    public void heBin() 
        List list = new ArrayList();
        list = list1;
        list.addAll(list2);
        System.out.println("\\n将2个List拼成一个List,是所有List的合并,循环打印");
        show(list);
    
    public static void main(String[] args) 
        Test test = new Test();
        test.heBin();
    
参考技术A Arrays.sort

将两个数组 排列组合到一个数组集合 求java 代码

输入 数组1a,b,c 数组2x,y,z输出List数组 a,b,c 去掉 C3/3 C0/3 排列组合 a b c a,b a,c b,cx,y,z 去掉 C3/3 C0/3 排列组合 x y z x,y x,z y,z现在要求当 数组1a,b,c 取a 的时候 从数组二中取y,z 组合成 a,y,z 现在要求当 数组1a,b,c 取b 的时候 从数组二中取x,z 组合成 x,b,z 现在要求当 数组1a,b,c 取c 的时候 从数组二中取x,z 组合成 x,y,c 依次类推现在要求当 数组1a,b,c 取a,b 的时候 从数组二中取z 组合成 a,b,z.....输出的List List数组就是组合的数组.( 从数组1从取数据填充到新的数组对应的位子,其他位置由对应的数组2中取.)

参考技术A import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test

private String[] arr1;
private String[] arr2;

public Test()
//数组长度可以随意改,但必须保证两个数组长度一样
arr1 = new String[3];
arr2 = new String[3];
initArray();


private void initArray()
Scanner scanner = new Scanner(System.in);
for(int i=0;i<arr1.length;i++)
arr1[i] = scanner.next();

for(int i=0;i<arr2.length;i++)
arr2[i] = scanner.next();


/**
* 获取组合后的数组表单
* @return
*/
private List<String[]> getcombineList()
List<String[]> list = new ArrayList<String[]>();
combineArray(list, arr1, arr2);
combineArray(list, arr2, arr1);
return list;

/**
* 遍历数组str1,并将其复制到新的数组,再将str2中索引值与str1中索引值
* 相同的元素放入新的数组,然后将新的数组放入list中
* @param list
* @param str1
* @param str2
*/
private void combineArray(List<String[]> list,String[] str1, String[] str2)
for(int i=0; i<str1.length; i++)
String[] str = new String[str1.length];
for(int j=0; j<str2.length; j++)
str[j] = str2[j];
if(i == j)
str[j] = str1[j];

System.out.println(getArrayMessage(str));
list.add(str);



/**
* 将数组每一个元素组合成字符串
* @param str 字符串数组
* @return 组合字符串
*/
private String getArrayMessage(String[] str)
StringBuffer buffer = new StringBuffer();
for(int i=0; i<str.length; i++)
if(i == str.length-1)
buffer.append(str[i]);
else
buffer.append(str[i]).append(",");

return buffer.toString();


public static void main(String[] argv)
Test test = new Test();
test.getcombineList();

本回答被提问者和网友采纳
参考技术B 先问一下,list应该录入值应该录入一个吧,最后取a的时候,用什么方法取,有什么条件,你这有点笼统了.取得时候是按照下标取,还是按照里面的元素判断,如果这个弄清楚这个就出来了,而且最后录入的时候list怎么可以接收两个又可以接收三个呢?除非用的是数字,把所有元素相加,录入list,这个分析出来就这样,不难,就是有点绕,如果你不会的话,把前面的条件和元素类型告诉我,我给你弄出来 参考技术C 请问楼主,这两个数组固定的还是用户输入的数组?追问

由用户输入的

追答

还是不明白楼主的意思,输出list组合,
=======================================
在要求当 数组1a,b,c 取a 的时候 从数组二中取y,z 组合成 a,y,z
现在要求当 数组1a,b,c 取b 的时候 从数组二中取x,z 组合成 x,b,z
现在要求当 数组1a,b,c 取c 的时候 从数组二中取x,z 组合成 x,y,c

依次类推
现在要求当 数组1a,b,c 取a,b 的时候 从数组二中取z 组合成 a,b,z
.....
=====================================
是将所有的情况输出来:
{a,b,c,d} 1,2,3,4
:a,2,31,b,31,2,ca1,2,3,d
a,b,3a,2,c1,b,c....
a,b,c,1....

等等所有的情况输出来,还是:根据用户的要求取两个,三个,加入另个数组啊,等下写写。。。。

以上是关于JAVA实现两个时间list时间段的排列。现在有2个list,list1是开始时间,list2是结的主要内容,如果未能解决你的问题,请参考以下文章

java list<实体> 集合排序问题 根据实体的 time属性,降序排列(距离现在时间越短,越靠前)

java 实现全排列

Java里面List排序

java实现-字典序全排列

JAVA中List集合的汉字排序

java 比较 两列表