Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按第一个单词对ArrayList排序_Java_Arrays_Sorting_Arraylist - Fatal编程技术网

Java 按第一个单词对ArrayList排序

Java 按第一个单词对ArrayList排序,java,arrays,sorting,arraylist,Java,Arrays,Sorting,Arraylist,因此,我将哈希表读入ArrayList以进行排序。 我有很多数字值,后面是空白,然后是另一个数字,表示从文本文件中找到它的位置。我的未排序数组如下所示: 101 11.7 112 479 等等 如果我按集合对其进行排序。sort();我的数组将如下所示: 101 17 11 12 479 因此,它按字母顺序而不是数字顺序对它们进行比较。我想要的是忽略第二个数字,并按第一个单词对列表进行排序 public void xor(arrayObject[] array){ try{ F

因此,我将哈希表读入ArrayList以进行排序。 我有很多数字值,后面是空白,然后是另一个数字,表示从文本文件中找到它的位置。我的未排序数组如下所示:

101
11.7
112
479
等等 如果我按集合对其进行排序。sort();我的数组将如下所示:
101
17
11 12
479
因此,它按字母顺序而不是数字顺序对它们进行比较。我想要的是忽略第二个数字,并按第一个单词对列表进行排序

public void xor(arrayObject[] array){
    try{

    FileWriter textWriter = new FileWriter(new File("xor.txt"));
    ArrayList<String> temp = new ArrayList<>();
    String tempString;

    for(int i = 0; i < array.length; i++){

        if(array[i] != null){
            tempString ="";
            int hash = hashFunction(i);
            int length = String.valueOf(array[hash].value).length();
            if(array[hash].foundFromA && !array[hash].foundFromB){

                tempString += Integer.toString(array[hash].value);
               for(int a = 0; a < 10-length; a++){

                 tempString += " ";
                }
                tempString += "1";
                temp.add(tempString);

            }
            else if(!array[hash].foundFromA && array[hash].foundFromB){

                tempString += Integer.toString(array[hash].value);

                for(int a = 0; a < 10-length; a++){
                 tempString += " ";
                }

                tempString += "2";
                temp.add(tempString);
            }

        }
    }
    Collections.sort(temp);

    for(String s : temp){
        textWriter.write(s);
        textWriter.write(System.lineSeparator());
    }
    textWriter.close();
     System.out.println("Writing xor file succesful");
    }
    catch(IOException e){
        System.out.println("Failed to save file");
    }
}
public void异或(arrayObject[]数组){
试一试{
FileWriter textWriter=newfilewriter(新文件(“xor.txt”);
ArrayList temp=新的ArrayList();
字符串tempString;
for(int i=0;i
您可以创建一个comparator类,并在排序方法中使用它

public class MyComparator implements java.util.Comparator<String> {

    public int compare(String s1, String s2) {
        return Integer.parseInt(s1.split( " " )[0]) - Integer.parseInt( s2.split( " " )[0] );
    }
}

您可以创建一个comparator类并在sort方法中使用它

public class MyComparator implements java.util.Comparator<String> {

    public int compare(String s1, String s2) {
        return Integer.parseInt(s1.split( " " )[0]) - Integer.parseInt( s2.split( " " )[0] );
    }
}

正如Abdou所说,您可以使用
比较器
,但是您可以直接将其传递给
排序
方法,而不是创建一个单独的类,这更容易实现

import java.util.*;

public class HelloWorld {
  public static void main(String[] args) {
    ArrayList<String> myList = new ArrayList<>();

    myList.add("10 1");
    myList.add("11 7");
    myList.add("1 12");
    myList.add("47 9");
    myList.add("110 9");

    Collections.sort(myList, new Comparator<String>() {
      public int compare(String a, String b) {
        int n1 = Integer.parseInt(a.split(" ")[0]);
        int n2 = Integer.parseInt(b.split(" ")[0]);

        return n1 - n2;
      } 
    });

    for (String item : myList) {
      System.out.println(item);
    }
  }
}
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
ArrayList myList=新的ArrayList();
myList.添加(“10 1”);
myList.添加(“11 7”);
myList.添加(“1 12”);
myList.添加(“47 9”);
myList.添加(“110 9”);
Collections.sort(myList,newcomparator(){
公共整数比较(字符串a、字符串b){
int n1=整数.parseInt(a.split(“”[0]);
int n2=Integer.parseInt(b.split(“”[0]);
返回n1-n2;
} 
});
用于(字符串项:myList){
系统输出打印项次(项);
}
}
}

尽管我会为这些值创建一个类,并让这个类实现
Comparable
接口。它将更干净,
sort
方法将开箱即用。

如Abdou所述,您可以使用
比较器
,但您可以直接将其传递给
sort
方法,而不是创建一个单独的类,这更容易实现

import java.util.*;

public class HelloWorld {
  public static void main(String[] args) {
    ArrayList<String> myList = new ArrayList<>();

    myList.add("10 1");
    myList.add("11 7");
    myList.add("1 12");
    myList.add("47 9");
    myList.add("110 9");

    Collections.sort(myList, new Comparator<String>() {
      public int compare(String a, String b) {
        int n1 = Integer.parseInt(a.split(" ")[0]);
        int n2 = Integer.parseInt(b.split(" ")[0]);

        return n1 - n2;
      } 
    });

    for (String item : myList) {
      System.out.println(item);
    }
  }
}
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
ArrayList myList=新的ArrayList();
myList.添加(“10 1”);
myList.添加(“11 7”);
myList.添加(“1 12”);
myList.添加(“47 9”);
myList.添加(“110 9”);
Collections.sort(myList,newcomparator(){
公共整数比较(字符串a、字符串b){
int n1=整数.parseInt(a.split(“”[0]);
int n2=Integer.parseInt(b.split(“”[0]);
返回n1-n2;
} 
});
用于(字符串项:myList){
系统输出打印项次(项);
}
}
}

尽管我会为这些值创建一个类,并让这个类实现
Comparable
接口。它会更干净,
排序
方法会开箱即用。

我看不到任何代码,毫无疑问。。。您对我们有什么期望?使用您自己的比较器或实现可比较的接口,然后在实现中执行排序逻辑请显示您的实现,包括您自己的比较器。不要将这两个值保存在相同的
字符串中。创建您自己的包含两个字段的类,然后让它实现
Comparable
。它在没有代码的情况下发布,对不起,我看不到代码,毫无疑问。。。您对我们有什么期望?使用您自己的比较器或实现可比较的接口,然后在实现中执行排序逻辑请显示您的实现,包括您自己的比较器。不要将这两个值保存在相同的
字符串中。创建您自己的包含两个字段的类,然后让它实现
Comparable
。它没有代码就发布了,对不起