【java】集合List里面的元素排列

【java】集合List里面的元素排列,第1张

不知有没有直接的方法可以调用,没去翻API
傻瓜方法
定义26字母数组
String[] letter = {A,B,C};
List<String> newList = new LinkedList<String>();//这种LIST是记录顺序的,怎么进去的就怎么出来
遍历字母数组
1:for(int i=0;i<letterlength;i++){
遍历list
2: for(String str : list){
判断如果首字母相同,就放到MAP下或者新的LIST下面,这里采用新LIST
newListadd(str);
//得到后,中断循环2
break;
}
}
循环完后,再遍历newList就会是你要的结果了

先要设定list的排序规则 意思是要建立一个比较器 这个比较器就是装的两个中文的比较规则(按拼音首字母排序)
然后调用集合类的排序方法对list进行排序就行了。。。
汉字取拼音首字母有很多方法 你去网上搜下大把代码
bean的一样啊 举个例子吧:
class mybean implements Comparator
{
private String funcName;
public mybean()
{
}
public mybean(String func)
{
thisfuncName = func;
}
public void setFuncName( String funcName)
{
thisfuncName = funcName;
}
public String getFuncName()
{
return thisfuncName;
}
public int compare(mybean o1, mybean o2)
{
String fname1 = o1getFuncName();
String fname2 = o2getFuncName();
//下面对fname和fnam2进行比较 比较规则是取fname1和fname2的拼音首字母进行比较 如果fname1的拼音首字母较大 则返回1 否则返回-1 相等返回0
}
}
然后 List<mybean> al = new ArrayList<mybean>();
aladd(new mybean("中国"));
aladd(new mybean("美国"));
最后再调用Collectionssort(al,new mybean());就可以对al中的mybean进行排序

分析问题,集合中每一个元素都含有数字,需要得到里面的数字存入一个集合或者数组中

循环遍历字符串,根据下标判断每一个字符是否是数字,是的话加入一个空的字符串中,遍历一遍后得到原字符串中的数字字符串,转换成数字存入数组,进行升序排序

import javautilArrayList;
import javautilArrays;
public class Test20 {
public static int getNum(String s) {// 获取字符串中的数字
String num = "";
for (int i = 0; i < slength(); i++) {
if (scharAt(i) >= '0' && scharAt(i) <= '9') {// 遍历判断是否为数字
num += scharAt(i);
}
}
return IntegerparseInt(num);
}
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();// 字符串集合
listadd("abc123");
listadd("我是栗子1");
listadd("我是栗子2");
listadd("我是栗子3是栗子4");
listadd("栗子100"); // 例子
int[] array = new int[listsize()];// 定义一个数组用来存放数字
for (int i = 0; i < listsize(); i++) {
array[i] = getNum(listget(i));// 遍历集合,调用方法获得里面的数字并存入数组
}
Arrayssort(array);// 升序排序
for (int i : array) {
Systemoutprintln(i);// 遍历输出
}
}
}结果:1
2
34
100
123

下面的代码是根据学生年龄排序学生list 的一个例子:

import javautilArrayList;
import javautilList;
class Student {

private String name;

private int age;
public Student(String name, int age) {
thisname = name;
thisage = age;
}
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
thisage = age;
}
@Override
public String toString() {
return "Perosn [name=" + name + ", age=" + age + "]";
}
}
public class App {
 
    public static void main(String[] args) {
    
     List<Student> students = new ArrayList<>();
    
     studentsadd(new Student("abc", 12));
     studentsadd(new Student("bcd", 20));
     studentsadd(new Student("cde", 17));
     studentsadd(new Student("def", 25));
     studentsadd(new Student("efg", 15));
    
     studentssort((x, y) -> Integercompare(xgetAge(), ygetAge()));
    
     for (Student stu : students) {
     Systemoutprintln(stu);
     }
    }
}

运行结果:

用 Collectionssort()排序,给你个例子,你参考下

import javautilArrayList;
import javautilCollections;
import javautilComparator;
import javautilList;
public class $ {
    public static void main(String[] args) {
        List<Bean> data = new ArrayList<Bean>();
        dataadd(new Bean("aaaaa", 20));
        dataadd(new Bean("bbbbb", 10));
        Systemoutprintln("排序前:" + data);
        Collectionssort(data, new Comparator<Bean>() {
            public int compare(Bean o1, Bean o2) {
                return o1getName()compareTo(o2getName());
            }
        });
        Systemoutprintln("按name升序:" + data);
        Collectionssort(data, new Comparator<Bean>() {
            public int compare(Bean o1, Bean o2) {
                return o2getName()compareTo(o1getName());
            }
        });
        Systemoutprintln("按name降序:" + data);
        Collectionssort(data, new Comparator<Bean>() {
            public int compare(Bean o1, Bean o2) {
                return o1getAge() - o2getAge();
            }
        });
        Systemoutprintln("按age升序:" + data);
        Collectionssort(data, new Comparator<Bean>() {
            public int compare(Bean o1, Bean o2) {
                return o2getAge() - o1getAge();
            }
        });
        Systemoutprintln("按age降序:" + data);
    }
}
class Bean {
    private String name;
    private int age;
    public Bean(String name, int age) {
        thisname = name;
        thisage = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        thisname = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        thisage = age;
    }
    public String toString() {
        return "[" + name + "," + age + "]";
    }
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12605603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存