Java linear table sorting
Foreword: When I was working on JDBC just now, I suddenly felt that order-by was used too much and was not new. My sixth sense told me that Java has a way to sort linear tables. Encapsulate, and then click "." in eclipse. Haha, there is such a static method public static
Modify the record: According to @mythabc's suggestion, another way has been added.
Method 1: Comparator
Benefits: This method is more flexible when running. If you want to change the sorting rules, the original comparison will not be changed. Comparator, and directly create another comparator, just change the new class name of the comparator on the client. This is closer to the opening and closing principle. When multiple comparators are accumulated, various sorting rules can be converted at will, which is quite cool. ; the separation of model and sorting is closer to the single responsibility principle.
1. First define a model:
package model; /** * User.java * * @author 梁WP 2014年3月3日 */ public class User { private String userName; private int userAge; public User() { } public User(String userName, int userAge) { this.userName = userName; this.userAge = userAge; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } }
##2. Then define a comparator and implement java.util .Comparator interface, write comparison rules in the compare() method:
package util; import java.util.Comparator; import model.User; /** * ComparatorUser.java * * @author 梁WP 2014年3月3日 */ public class ComparatorUser implements Comparator<User> { @Override public int compare(User arg0, User arg1) { // 先比较名字 int flag = arg0.getUserName().compareTo(arg1.getUserName()); // 如果名字一样,就比较年龄 if (flag == 0) { return arg0.getUserAge() - arg1.getUserAge(); } return flag; } }
3. Use java.util.Collections when sorting The sort(List list, Comparator c) method:
package test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import util.ComparatorUser; import model.User; /** * TestApp.java * * @author 梁WP 2014年3月3日 */ public class TestApp { public static void main(String[] arg0) { List<User> userList = new ArrayList<User>(); // 插入数据 userList.add(new User("A", 15)); userList.add(new User("B", 14)); userList.add(new User("A", 14)); // 排序 Collections.sort(userList, new ComparatorUser()); // 打印结果 for (User u : userList) { System.out.println(u.getUserName() + " " + u.getUserAge()); } } }
4. Running result:
A 14 A 15 B 14
Method 2: Implement the Comparable interface
Benefits: Directly attach sortable attributes to the model without having to define new classes (no need to define comparators), reducing the number of classes and making it easier to manage and read It's easier when you're there.
1. First define a model, implement the Comparable interface, and write comparison rules in the compareTo() method:
package model; /** * Student.java * * @author 梁WP 2014年3月4日 */ public class Student implements Comparable<Student> { private String studentName; private int studentAge; public Student() { } public Student(String studentName, int studentAge) { this.studentName = studentName; this.studentAge = studentAge; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public int getStudentAge() { return studentAge; } public void setStudentAge(int studentAge) { this.studentAge = studentAge; } @Override public int compareTo(Student o) { // 先比较名字 int flag = this.getStudentName().compareTo(o.getStudentName()); // 如果名字一样,就比较年龄 if (flag == 0) { return this.getStudentAge() - o.getStudentAge(); } return flag; } }
2. Use java when sorting The sort(List list) method in .util.Collections:
package test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import model.Student; /** * TestApp.java * * @author 梁WP 2014年3月4日 */ public class TestApp2 { public static void main(String[] arg0) { List<Student> studentList = new ArrayList<Student>(); // 插入数据 studentList.add(new Student("A", 15)); studentList.add(new Student("B", 14)); studentList.add(new Student("A", 14)); // 排序 Collections.sort(studentList); // 打印结果 for (Student s : studentList) { System.out.println(s.getStudentName() + " " + s.getStudentAge()); } } }
3. Running result:
A 14 A 15 B 14The above is the content of Java linear table sorting. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

JVM works by converting Java code into machine code and managing resources. 1) Class loading: Load the .class file into memory. 2) Runtime data area: manage memory area. 3) Execution engine: interpret or compile execution bytecode. 4) Local method interface: interact with the operating system through JNI.

JVM enables Java to run across platforms. 1) JVM loads, validates and executes bytecode. 2) JVM's work includes class loading, bytecode verification, interpretation execution and memory management. 3) JVM supports advanced features such as dynamic class loading and reflection.

Java applications can run on different operating systems through the following steps: 1) Use File or Paths class to process file paths; 2) Set and obtain environment variables through System.getenv(); 3) Use Maven or Gradle to manage dependencies and test. Java's cross-platform capabilities rely on the JVM's abstraction layer, but still require manual handling of certain operating system-specific features.

Java requires specific configuration and tuning on different platforms. 1) Adjust JVM parameters, such as -Xms and -Xmx to set the heap size. 2) Choose the appropriate garbage collection strategy, such as ParallelGC or G1GC. 3) Configure the Native library to adapt to different platforms. These measures can enable Java applications to perform best in various environments.

OSGi,ApacheCommonsLang,JNA,andJVMoptionsareeffectiveforhandlingplatform-specificchallengesinJava.1)OSGimanagesdependenciesandisolatescomponents.2)ApacheCommonsLangprovidesutilityfunctions.3)JNAallowscallingnativecode.4)JVMoptionstweakapplicationbehav

JVMmanagesgarbagecollectionacrossplatformseffectivelybyusingagenerationalapproachandadaptingtoOSandhardwaredifferences.ItemploysvariouscollectorslikeSerial,Parallel,CMS,andG1,eachsuitedfordifferentscenarios.Performancecanbetunedwithflagslike-XX:NewRa

Java code can run on different operating systems without modification, because Java's "write once, run everywhere" philosophy is implemented by Java virtual machine (JVM). As the intermediary between the compiled Java bytecode and the operating system, the JVM translates the bytecode into specific machine instructions to ensure that the program can run independently on any platform with JVM installed.

The compilation and execution of Java programs achieve platform independence through bytecode and JVM. 1) Write Java source code and compile it into bytecode. 2) Use JVM to execute bytecode on any platform to ensure the code runs across platforms.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SublimeText3 Chinese version
Chinese version, very easy to use

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
