合并第三个数组中的两个数组也按升序对第三个数组进行排序

时间:2015-07-06 13:52:52

标签: java arrays

我想编写java程序来合并第三个数组中的两个数组。还要按升序对第三个数组进行排序。但是不允许重复数字。我可以写这个程序。这就是我到目前为止所做的......

public class combine {
  public static void main(String[]args){

  int[]a = {1, 2, 3};
  int[]b = {4, 5, 6};
//  int[]c = new int[10];
  int[]c = new int[a.length+b.length];
  int i;
  for(i=0; i<a.length; i++)
     c[i] = a[i];

     for(int j=0; j<b.length; j++)
        c[i++]=b[j];

  for(int k=0; k<c.length; k++)
  System.out.print(c[k]+" ");
}

}   

5 个答案:

答案 0 :(得分:2)

首先创建数组:

var basicConfig = {
    method: 'GET',
    url: myURL,
    headers: {
        'Authorization': 'Basic ' + basicKey, 
        'Accept': "application/json", 
        'Content-Type': 'application/x-www-form-urlencoded' 
    },
    data: requestPayload 
}

$http(basicConfig).success(function(data, status){
    console.log(status);
}).error(function(data, status){
    console.log(status);
});

将数组转换为列表以便更简单地处理:

Integer[] a = new Integer[]{8, 7, 6, 5, 4, 3, 2, 1, 0};
Integer[] b = new Integer[]{0, 1, 1, 2, 3, 5, 8, 13, 21};

合并列表:

List<Integer> aList = new ArrayList<>(Arrays.asList(a));
List<Integer> bList = Arrays.asList(b);

按升序对列表进行排序:

aList.addAll(bList);

将列表转换为集合(每个定义的集合没有重复值):

aList.sort(new Comparator<Integer>() {
    @Override
    public int compare(Integer integer, Integer t1) {
        return integer.compareTo(t1);
    }
});

打印合并的排序数组,不带重复值:

Set<Integer> uniqueList = new HashSet<>(aList);

Reuslt:

System.out.println(uniqueList);

答案 1 :(得分:1)

尝试以下代码,在两个数组中添加值以设置删除重复项,并使用树集可以获得顺序,然后根据需要填充任何ds

    public static void main(String args[]) {
    Set<Integer> mySet = new TreeSet<Integer>();
    int[] a = { 1, 2, 3, 4 };
    int[] b = { 3, 5, 4, 6 };
    for (int i : a) {
        mySet.add(i);
    }
    for (int i : b) {
        mySet.add(i);
    }
    System.out.println(mySet);
}

输出: [1,2,3,4,5,6]

答案 2 :(得分:0)

您可以将两个数组中的所有数字(或数字)添加到TreeSet中,然后继续调用Error : Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Defunct; last used in version 0.9.2) 并将其添加到结果数组,然后mySet.first()直到该集合为止空。因为它是一个TreeSet,所以重复获取和删除集合中的第一个(也就是最低的)元素将产生升序。

你可以做的另一件事是对两个数组进行排序,然后使用一轮合并排序来组合数组,并检查前面插入的数字是否等于要插入的数字,不做任何事情并跳过数字。

答案 3 :(得分:0)

你可以在临时数组中合并a和b,然后使用Arrays.sort(temp);并在temp中进行线性搜索,只复制c

中的唯一条目

答案 4 :(得分:0)

您可以使用已排序且没有重复值的TreeSet。这是一个例子:

Integer[] numbers1 = { 7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4 };
Integer[] numbers2 = { 12, 7, 4, 6, 10, 8, 2, 9, 5, 5, 3 };

List<Integer> list1 = Arrays.asList(numbers1);
List<Integer> list2 = Arrays.asList(numbers2);

Set<Integer> set = new TreeSet<Integer>(list1);
set.addAll(new TreeSet<Integer>(list2));

System.out.println(set.toString());

这是工作ideone

结果:[2, 3, 4, 5, 6, 7, 8, 9, 10, 12]

注意:如果您无法使用Integer[]但仅int[],则必须先使用<Property Id="INSTALLLOCATION" Secure="yes" /> <Property Id="TARGETDIR" Secure="yes" /> <CustomAction Id='DIRCA_TARGETDIR' Property='TARGETDIR' Value='[ProgramFilesFolder]\[ProductName]' Execute='firstSequence' /> <Directory Id='TARGETDIR' Name='SourceDir'> <Component Id='com_dir_TARGETDIR' Guid='B2F279CF-2E8B-4C04-A5EE-3246B3EEC424' Transitive='no'> <CreateFolder Directory='TARGETDIR' /> <RemoveFolder Id='TARGETDIR' On='uninstall' /> </Component> <Directory Id="INSTALLLOCATION" Name="Client"> <Component Id="cmpB62155E45B33F7E9F085A10EF7EC9B36A" Guid="75241554-2B0E-41B8-8B1F-2A627FB00B83"> <File Id="fil7D5D59A00555465436A47FEE7D749560A" KeyPath="yes" Source="$(var.WarDir)\someWar.war" /> </Component> 进行转换。 StackOverflow上已有多个问题。