「javalist顺序」java listfiles排序

博主:adminadmin 2023-01-03 18:27:08 842

本篇文章给大家谈谈javalist顺序,以及java listfiles排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中的list顺序是固定的吗?是有序的吗?求解,谢谢。

顺序放进去是不会乱的,举个例子,一个list,第一个放进去是1,第二个放进去是2:

ListInteger numList=new ArrayList();

numList.add(1);

numList.add(2);

当你取第一个时numList.get(0);(下标从0开始)

打印它出来还是:1

如果想了解更深,建议学学数据结构,它们的存储结构与方式

java怎么对list进行排序

1,使用Comparator 接口

Student类 结构如下:(省略getter,setter方法)

public class Student {

/***

* 姓名

*/

private String name;

private int age;

private String address;

/***

* 考试得分

*/

private int score;

//省略getter,setter方法

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + ", score=" + score

+ "]";

}

}

测试方法:

@Test

public void test_ListComparator(){

ListStudentstudents=new ArrayListStudent();

Student stu=null;

stu=new Student();

stu.setName("whuang");

stu.setAge(12);

stu.setScore(80);

students.add(stu);

stu=new Student();

stu.setName("rong");

stu.setAge(11);

stu.setScore(90);

students.add(stu);

stu=new Student();

stu.setName("zhu");

stu.setAge(15);

stu.setScore(100);

students.add(stu);

Collections.sort(students,new SystemHWUtil. ListComparator(true,"age"));

System.out.println(students);

}

运行结果:

[Student [name=rong, age=11, score=90], Student [name=whuang, age=12, score=80], Student [name=zhu, age=15, score=100]]

核心类:

public static class ListComparator implements Comparator{

/***

* 是否转化为Int之后再比较

*/

private boolean isConvertInteger;

/***

* 对哪个列进行排序

*/

private String comparedProperty;

public ListComparator(boolean isConvertInteger,String comparedProperty) {

super();

this.isConvertInteger = isConvertInteger;

this.comparedProperty=comparedProperty;

}

public int compare(Object o1, Object o2) {

if(null!=o1null!=o2)

{

try {

Object obj1=ReflectHWUtils.getObjectValue(o1, comparedProperty);

Object obj2=ReflectHWUtils.getObjectValue(o2, comparedProperty);

if(isConvertInteger){

int num1;

int num2;

if(obj1 instanceof Integer){

num1=(Integer)obj1;

num2=(Integer)obj2;

}else{

num1=Integer.parseInt(obj1.toString());

num2=Integer.parseInt(obj2.toString());

}

if(num1num2){

return 1;

}else if(num1num2){

return -1;

}else{

return 0;

}

}else{

return obj1.toString().compareTo(obj2.toString());

}

} catch (SecurityException e) {

e.printStackTrace();

} catch (NoSuchFieldException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

return 0/*等于*/;

}

}

2,可以指定是升序还是降序

实例:

@Test

public void test_ListComparator(){

ListStudentstudents=new ArrayListStudent();

Student stu=null;

stu=new Student();

stu.setName("whuang");

stu.setAge(12);

stu.setScore(80);

students.add(stu);

stu=new Student();

stu.setName("rong");

stu.setAge(11);

stu.setScore(90);

students.add(stu);

stu=new Student();

stu.setName("zhu");

stu.setAge(15);

stu.setScore(100);

students.add(stu);

SortListStudent sortList = new SortListStudent();

sortList.Sort(students, "getAge", "asc");

System.out.println(students);

}

注意:sortList.Sort 的第二个参数是方法名,不是成员变量名.

核心代码

package com.common.util;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class SortListE {

public void Sort(ListE list, final String method, final String sort) {

Collections.sort(list, new Comparator() {

public int compare(Object a, Object b) {

int ret = 0;

try {

Method m1 = ((E) a).getClass().getMethod(method, null);

Method m2 = ((E) b).getClass().getMethod(method, null);

if (sort != null "desc".equals(sort))// 倒序

ret = m2.invoke(((E) b), null).toString()

.compareTo(m1.invoke(((E) a), null).toString());

else

// 正序

ret = m1.invoke(((E) a), null).toString()

.compareTo(m2.invoke(((E) b), null).toString());

} catch (NoSuchMethodException ne) {

System.out.println(ne);

} catch (IllegalAccessException ie) {

System.out.println(ie);

} catch (InvocationTargetException it) {

System.out.println(it);

}

return ret;

}

});

}

}

java中list排序

第一种方法,就是list中对象实现Comparable接口,代码如下:

public class Person implements ComparablePerson {

private String name;

private Integer order;

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name

* the name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* @return the order

*/

public Integer getOrder() {

return order;

}

/**

* @param order

* the order to set

*/

public void setOrder(Integer order) {

this.order = order;

}

@Override

public int compareTo(Person arg0) {

return this.getOrder().compareTo(arg0.getOrder());

}

}

public static void main(String[] args) {

ListPerson listA = new ArrayListPerson();

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

p1.setName("name1");

p1.setOrder(1);

p2.setName("name2");

p2.setOrder(2);

p3.setName("name3");

p3.setOrder(3);

listA.add(p2);

listA.add(p1);

listA.add(p3);

Collections.sort(listA);

for (Person p : listA) {

System.out.println(p.getName());

}

}

第二种方法,就是在重载Collections.sort方法,代码如下:

public class Person {

private String name;

private Integer order;

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name

* the name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* @return the order

*/

public Integer getOrder() {

return order;

}

/**

* @param order

* the order to set

*/

public void setOrder(Integer order) {

this.order = order;

}

}

public static void main(String[] args) {

ListPerson listA = new ArrayListPerson();

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

p1.setName("name1");

p1.setOrder(1);

p2.setName("name2");

p2.setOrder(2);

p3.setName("name3");

p3.setOrder(3);

listA.add(p2);

listA.add(p1);

listA.add(p3);

Collections.sort(listA, new ComparatorPerson() {

public int compare(Person arg0, Person arg1) {

return arg0.getOrder().compareTo(arg1.getOrder());

}

});

for (Person p : listA) {

System.out.println(p.getName());

}

}

两次执行的结果都是:

name1

name2

name3

java 怎么将List里面数据排序?

学生实体类,包含姓名和年龄属性,

比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。

第一种:实体类自己实现比较

(实现comparable接口:public interface ComparableT ,里面就一个方法声明:public int compareTo(T o); )

然后利用List类的sort(Comparator? super E c)方法或java.util.Collections工具类的sort(ListT list) (其实里面就一句:list.sort(null); )进行排序:

结果:

第二种:借助比较器进行排序。

示例代码:

比较器java.util.Comparator类是一个接口(public interface ComparatorT ),包含int compare(T o1, T o2);等方法:

我们的比较器要实现该接口并实现compare方法:

比较的时候可以利用List的sort(Comparator? super E c)方法(或者java.util.Collections工具类的sort(ListT list, Comparator? super T c)方法)进行排序。

结果跟第一种方法一样:

Java的List怎么排序啊?

用Collections.sort就可以排序,

里面的排序是默认的按自然顺序排列

也就是1,2,3,4这种

参数要求实现了Comparable的数据才能排序,

如果你自己写的类,你就要实现Comparable接口,然后在接口里面自动生成的方法里面

指定排序方法,一般的String Inteneger类都是实现了这个接口的 不用自己操作的。

你可以取看源代码

关于javalist顺序和java listfiles排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。