JAVA对ArrayList排序

基于python获取网易云热门歌单及封面 先看一下图片背后的代码 非常好,里面歌单名字,id,以及封面图片都有了.在复制url的时候注意把/#删掉,要不然爬不了. import requests from lxml import etree url='https://music.163.com/discover/playlist' head={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch 阅读详情

以下前三个代码都是通过实现Comparable接口,或是实例化一个比较器,虽然重点部分重复了,也各有不同,还是都贴上吧。

 http://zhidao.baidu.com/question/97784478

java如何对ArrayList中对象按照该对象某属性排序 

 

增加排序功能,打印时:输出学生对象的时候,需要先按照年龄排序,如果年龄相同,则按照姓名排序,如果姓名也相同,则按照学号排序。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class ComparableTest {
 public static void main(String[] args) {
  Comparator<Student> comparator = new Comparator<Student>(){
   public int compare(Student s1, Student s2) {
    //先排年龄
    if(s1.age!=s2.age){
     return s1.age-s2.age;
    }
    else{
     //年龄相同则按姓名排序
     if(!s1.name.equals(s2.name)){
      return s1.name.compareTo(s2.name);
     }
     else{
      //姓名也相同则按学号排序
      return s1.id-s2.id;
     }
    }
   }
  };
  Student stu1 = new Student (1,"zhangsan","male",28,"cs");
  Student stu2 = new Student (2,"lisi","female",19,"cs");
  Student stu3 = new Student (3,"wangwu","male",22,"cs");
  Student stu4 = new Student (4,"zhaoliu","female",17,"cs");
  Student stu5 = new Student (5,"jiaoming","male",22,"cs");

  ArrayList<Student> List = new ArrayList<Student>();
  List.add(stu1);
  List.add(stu2);
  List.add(stu3);
  List.add(stu4);
  List.add(stu5); 
  //这里就会自动根据规则进行排序
  Collections.sort(List,comparator);
  display(List);
 }
 
 static void display(ArrayList<Student> lst){
  for(Student s:lst)
   System.out.println(s);
 }
}

class Student{
 int age;
 int id;
 String gender;
 String name;
 String cs;
 Student(int id,String name,String gender,int age,String cs){
  this.age=age;
  this.name=name;
  this.gender=gender;
  this.id=id;
  this.cs=cs;
 }
 public String toString(){
  return id+"  "+name+"  "+gender+"  "+age+"  "+cs;
 }
} 

 http://ajava.org/code/Collections/14160.html

以一个point点类做例子:

import java.util.*;   
  
public class Test {   
  
public static void main(String[] args){   
  List<Point> points=new ArrayList<Point>();   
     
  Point point1=new Point();   
  point1.setX(1324);   
  point1.setY(345);   
  point1.setZ(436);   
  points.add(point1);   
     
  Point point2=new Point();   
  point2.setX(23);   
  point2.setY(8941.656);   
  point2.setZ(431412);   
  points.add(point2);   
     
  Point point3=new Point();   
  point3.setX(786584);   
  point3.setY(23452);   
  point3.setZ(43563);   
  points.add(point3);   
     
  //根据X排序   
  Collections.sort(points,new SortByX());   
     
  for(Point p:points){   
   System.out.print(p.getX()+"\t"+p.getY()+"\t"+p.getZ());   
   System.out.println();   
  }   
     
  //根据Y排序   
//  Collections.sort(points,new SortByY());   
//     
//  for(Point p:points){   
//   System.out.print(p.getX()+"\t"+p.getY()+"\t"+p.getZ());   
//   System.out.println();   
//  }   
//     
//  //根据Z排序   
//  Collections.sort(points,new SortByZ());   
//     
//  for(Point p:points){   
//   System.out.print(p.getX()+"\t"+p.getY()+"\t"+p.getZ());   
//   System.out.println();   
//  }   
}   
  
}   
  
class Point{   
private double x;   
private double y;   
private double z;   
public double getX() {   
  return x;   
}   
public void setX(double x) {   
  this.x = x;   
}   
public double getY() {   
  return y;   
}   
public void setY(double y) {   
  this.y = y;   
}   
public double getZ() {   
  return z;   
}   
public void setZ(double z) {   
  this.z = z;   
}   
public Point(){}   
}   
  
//根据X排序   
class SortByX implements Comparator{   
public int compare(Object obj1,Object obj2){   
  Point point1=(Point)obj1;   
  Point point2=(Point)obj2;   
  if(point1.getX()>point2.getX())   
   return 1;   
  else  
   return 0;   
}   
}   
//根据Y排序   
class SortByY implements Comparator{   
public int compare(Object obj1,Object obj2){   
  Point point1=(Point)obj1;   
  Point point2=(Point)obj2;   
  if(point1.getY()>point2.getY())   
   return 1;   
  else  
   return 0;   
}   
}   
//根据Z排序   
class SortByZ implements Comparator{   
public int compare(Object obj1,Object obj2){   
  Point point1=(Point)obj1;   
  Point point2=(Point)obj2;   
  if(point1.getZ()>point2.getZ())   
   return 1;   
  else  
   return 0;   
}   
}     

http://www.blogjava.net/zygcs/archive/2008/01/17/176032.html  

//一个POJO例子

class User {
 String name;
 String age;
 
 public User(String name,String age){
  this.name=name;
  this.age=age;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 } 
}


//具体的比较类,实现Comparator接口

import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class ComparatorUser implements Comparator{

 public int compare(Object arg0, Object arg1) {
  User user0=(User)arg0;
  User user1=(User)arg1;

   //首先比较年龄,如果年龄相同,则比较名字

  int flag=user0.getAge().compareTo(user1.getAge());
  if(flag==0){
   return user0.getName().compareTo(user1.getName());
  }else{
   return flag;
  }  
 }
 
}




//测试类
public class SortTest {

 
 public static void main(String[] args){
  List userlist=new ArrayList();
  userlist.add(new User("dd","4"));
  userlist.add(new User("aa","1"));
  userlist.add(new User("ee","5"));
  userlist.add(new User("bb","2"));  
  userlist.add(new User("ff","5"));
  userlist.add(new User("cc","3"));
  userlist.add(new User("gg","6"));
  
  ComparatorUser comparator=new ComparatorUser();
  Collections.sort(userlist, comparator);
   
  for (int i=0;i<userlist.size();i++){
   User user_temp=(User)userlist.get(i);
      System.out.println(user_temp.getAge()+","+user_temp.getName()); 
  }
  
 }
}

 //首先年龄排序,如果年龄相同,则按名字排序

结果:
   1, aa
   2, bb
   3, cc
   4, dd
   5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
   5, ff
   6, gg

 

 http://zhidao.baidu.com/question/135304880.html?push=ql

最后这个没有用java的Comparable接口,自己写的排序函数。

要用JAVA写个东西读取TXT中的数据 且要计算出平均值和总值 最后还要按总值排序。 
 TXT的文件如下:

学号 姓名   语文 数学 英语 平均值 总值  排序
1   李守东   83  73  75
2   徐贤坤   58  58  87
3   钱云宋   41  86  90
4   陈平     83  43  65
5   金荣权   93  88  63
6   陈如棉   99  93  43
7   章可可   98  62  72
8   陈伟奔   87  43  76
9   张如祥   69  58  78
10  丁尚游   80  56  57
11  林宏旦   91  90  76
12  曾上腾   100 96  54
13  谢作品   82  100 55
14  温从卫   73  46  101
15  李明察   81  41  75
16  彭鸿威   46  46  89
17  翁文秀   57  43  58
18  陈家伟   63  58  98
19  温正考   100 64  57
20  周文湘   50  50  79
21  吴杰     65  65  83
22  赖登城   60  79  53
23  聂树露   51  76  45
24  张雅琴   68  95  56
25  曾瑞约   88  63  58
26  王志强   96  79  78
27  徐贤所   66  46  74
28  陈祥枭   82  96  91
29  温婷婷   41  73  96
30  应孔余   66  81  71
31  宋成取   71  68  62
32  黄益省   65  56  43
33  陈思文   55  100 44
34  上官福新 64  62  70
35  钟国横   49  69  56
36  林型涨   78  73  50 
 代码:


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Testa 
{
 public static void main(String[] args) 
 {
  //传入参数为文件目录
  test("d:/a.txt");
 }
 
 public static void test(String filePath){
  BufferedReader br = null;
  try {
   br = new BufferedReader(new FileReader(filePath));
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return;
  }
  
  String []columnName = {"Id", "Name", "Languages", "Math", "English"}; //列名
  int []courseIndexs = {2, 3, 4};          //课程对应的列
  int i,j,index;
  String line;
  List<Map<String, Object>> students = new ArrayList<Map<String, Object>>();
  //记录Id和总值,用于排序
  List<Map<String, Object>> sortList = new ArrayList<Map<String, Object>>();
  try {
   br.readLine(); //去掉第一行
   while((line = br.readLine()) != null){
    index = 0;
    String []se = line.split(" ");
    Map<String, Object> student = new HashMap<String, Object>();
    for(i = 0; i < se.length; i++){
     if("".equals(se[i])){
      continue;
     }
     if(index >= columnName.length){
      continue;
     }
     student.put(columnName[index], se[i]);
     index++;
    }
    //计算平均值,总值
    double total = 0;
    for(j = 0; j < courseIndexs.length; j++){
     total += Double.parseDouble((String) student.get(columnName[courseIndexs[j]]));
    }
    double average = total / courseIndexs.length;
    //只取一位小数
    average = Math.round(average * 10)/10;
    student.put("Total", total);
    student.put("Average", average);
    
    Map<String, Object> sort = new HashMap<String, Object>();
    sort.put("Id", student.get("Id"));
    sort.put("Total", student.get("Total"));
    sortList.add(sort);
    
    students.add(student);
   }
   br.close();
   
   //选择排序
   for(i = 0; i < sortList.size(); i++){
    for(j = i + 1; j < sortList.size(); j++){
     if((Double)sortList.get(i).get("Total") < (Double)sortList.get(j).get("Total")){
      Map<String, Object> temp = sortList.get(i);
      sortList.set(i, sortList.get(j));
      sortList.set(j, temp);
     }
    }
   }
   Map<Object, Integer> sortedId = new HashMap<Object, Integer>();
   for(i = 0; i < sortList.size(); i++){
    sortedId.put(sortList.get(i).get("Id"), i+1);
   }
   
   //设定序号
   for(j = 0; j < students.size(); j++){
    students.get(j).put("Order", sortedId.get(students.get(j).get("Id")));
   }
   
   //输出(写到原文件)
   //PrintWriter pw = new PrintWriter(new File(filePath));
   //输出(写到其他文件)
   PrintWriter pw = new PrintWriter(new File("D:/b.txt"));
   
   pw.println("Id\tName\tLan\tMath\tEnglish\tAverage\tTotal\tSort");
   int cIndex;
   for(i = 0; i < students.size(); i++){
    Map<String, Object> st = students.get(i);
    cIndex = 0;
    pw.println(st.get(columnName[cIndex++]) + "\t" + st.get(columnName[cIndex++])
      + "\t" + st.get(columnName[cIndex++])+ "\t" + st.get(columnName[cIndex++])
      + "\t" + st.get(columnName[cIndex++])
      + "\t" + st.get("Total")
      + "\t" + st.get("Average")
      + "\t" + st.get("Order"));
   }
   pw.flush();
   pw.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
} 


机器视觉中的特征提取【0】:什么是特征提取,特征提取有什么作用? 1.什么是特征提取? 特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。 这里我给一个例子来解释特征提取的第二个作用。那就是我们很熟悉的奖学金评定,我们知道学生的文化课成绩,道德分数,以及各种其他竞赛的成绩。摆在奖学金评定委员会面前的任务就是如何知道一个学生是否... 阅读详情

相关推荐

ArcGIS基础实战:面数据拓扑创建和错误修改全流程

通过下图的操作我们可以发现,图层的【Shape_Length】和【Shape_Area】字段的数值都发生了改变,表明两个图层重叠的那一部分图斑合并到另一个图班上,其面积会减小、长度会变大(自己重新计算一下也可以得到此验证结果的)。如图【拓扑实验结果】文件夹里右键,新建【文件地理数据库】,并进行命名为【xx拓扑检查】备注:养成良好的命名习惯。然后在【xx拓扑检查】下右键打开【新建要素数据集】,并对数据集进行命名为【XX拓扑】,然后进行下一步设置。在【KK拓扑】数据集上右键,新建【拓扑】。

yuanYW7556的博客 1万+

【java】对ArrayList中的元素进行排序的几种方式

对ArrayList中的元素进行排序

Ez4Sterben的博客 1万+

在 dell precision 7920 tower CentOS 8 Stream 上安裝nvidia驱动程序、Anaconda

简单记录一下如何在实验室dell precision 7920 tower CentOS 8 Stream上安装nvidia显卡驱动。

chen9046的博客 995

Java中如何对ArrayList对象排序

 有的时候,需要对ArrayList对象进行排序。对ArrayList<Integer> list = new ArrayList<Integer>()举例 1、升序  调用Collections.sort(list);方法。实现升序排序。  代码示例: public class ArrayListTest { public static void main(String[] args) { ArrayList<Integer> list = n

tanxinji的博客 7318

ZYNQ烧写程序到flash

1.打开SDK创建FBSl项目 点击finish 2.创建BootImage 导入fsbl.elf、.bin、.elf三个文件,Create Image 生成BOOT.bin文件 3.将BOOT文件烧录到FLASH image File选择2中生成的BOOT.bin文件,FSBL File选择fsbl.elf文件,连接好ZYNQ的Jtag,点击Program,即可烧录。 4.烧录程序到FLASH失败 如果是第一次烧录,需更改创建的fsbl工程下的main函数,在如下代码处加入BootModeRegi

qq_40603614的博客 8362

通过一个具体的例子,讲解 SAP Cloud Platform Integration(CPI) 的使用方法

最近笔者由于项目需要,又得学习一个新工具:SAP Cloud Platform Integration,简称 CPI,以前又叫做HCI - HANA Cloud Platform Integration Service.笔者想通过本文,把使用这个工具的第一手体会,分享给曾经用过SAP CRM中间件,但尚未有机会接触到CPI的朋友们。之所以本文标题里把SAP CRM中间件和SAP CPI关联在一起,是因为二者同广义上说,扮演的都是系统集成里中间件的角色。SAP ERP和CRM通过qRFC进行业务数据同步,而中

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2276

ArrayList里的对象按照属性排序

前天被面试问到在集合里的对象按照某个关键字去排序的问题,当时想到了两个解决方案。 如果结合ORM去考虑,我会在sqlmap里写sql语句的时候用order by去排序,这样查出来获得list就是有序的。不用去排序。 或则是将对象取出来,然后再单独对对象去排序放到arraylist里去。这种方法麻烦点,但是是最容易想到的解决方案。 今天在朋友建议下参考了API文档,发现原来Collections有静态

超威半导体 4310

Sigrity System SI SerialLink模式进行Pcie3协议仿真分析操作指导-pcie3_client_single_pre

Sigrity System SI SerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要检查的项目,通过协议分析视为满足设计要求,下面介绍pcie3_client_single_pre仿真分析,具体操作如下。Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1.24%UI RMS(平均值),即和标准值的偏差为1.24%UI。

weixin_54787054的博客 598

对ArrayList的元素排序的方式

java

Leo_Wcg的博客 1146

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

本文将详细介绍如何在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测,并提供实现源码

DT程序员的博客 706

37、深入解析SCTP与RTP传输协议

本文深入解析了SCTP与RTP两种重要传输协议。SCTP提供可靠的多流数据传输,支持关联管理、选择性确认和错误处理,适用于高可靠性场景;RTP则专注于实时音视频数据的低延迟传输,配合RTCP实现质量监控。文章详细介绍了两种协议的数据结构、工作流程及应用场景,并对比其特性,帮助开发者根据可靠性、实时性和多流需求选择合适的协议。

time3的博客 87

java ArrayList排序

常常遇到数组排序的问题.比如我有一个Person类,它的实例对象存储在ArrayList数组中,现在要把ArrayList数组中的Person对象按照年龄排序.其实这种情况经常遇到.下面给出源代码:1:Person.java文件:-------------------------------public class Person{     String name;     int age;  pu

wiregate的专栏 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

如何在Java中对ArrayList进行排序

默认情况下, ArrayList的元素是按照放入其中的顺序显示的。 通常,您可能需要对ArrayList进行排序以使其按字母顺序排序。 在此示例中,它显示了使用Collections.sort('List')对ArrayList进行排序。 import java.util.ArrayList; import java.util.Collections; import java.util.Li...

一名可爱的技术搬运工 1434

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java 8 如何对 ArrayList 元素进行排序?

在实际开发中,排序不一定总是基于元素的自然顺序。我们可能需要根据某些属性对对象进行排序。假设我们有一个Person类,包含name和age属性,下面演示如何按age进行排序。int age;@Override// 使用 Lambda 表达式按 age 排序System.out.println("按年龄排序后的列表: " + list);按年龄排序后的列表: [Bob (25), Alice (30), Charlie (35)]在这个例子中,使用Lambda表达式对。

网络技术联盟站 1113

arraylist 排序 java_Java对ArrayList进行排序

数字使用直接比较大小来排序,String的话,使用compare()方法进行排序。测试代码:1.对字符串对象排序@Testpublic void test17() throws Exception {List< String > stringList = new ArrayList<>();stringList.add("haha");stringList.add("123...

weixin_36050894的博客 1622

Java 集合之给ArrayList排序

Java 集合之给ArrayList排序 ArrayList的排序可以借助Collections工具类的sort(List list)以及重载的sort(List list, Comparator<? super T> c)方法;其中要想使用sort(List lis)方法进行排序集合元素必须实现comparable接口中的compareTo方法;使用重载的sort(List list, Comparator<? super T> c)方法则要传入一个自定义构造器,可以使用

wha_t_ever的博客 2723

java arraylist 对象排序_Java ArrayList中对象的排序 (Comparable VS Comparator)

我们通常使用Collections.sort()方法来对一个简单的数据列表排序。但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了。在使用这两者进行排序之前,先尝试不实现任何接口来进行排序。考虑下面的例子——有一个Student类,具有三个属性:name, rollno, agepublic classStudent {privateStr...

weixin_39849800的博客 509

Java中ArrayList进行排序总结

文章目录前言1.基础类型的集合排序:2.实体类的集合排序传统:3.Java8使用流式的排序:结尾 前言 ArrayList是最常见最频繁我们java编程当中使用的集合类,往往进行集合操作的时候会进行排序操作,本文进行一些总结来方便大家进行操作集合类的时候能够更轻松的排序集合实现业务。 1.基础类型的集合排序: @Test public void sortTest(){ List<Integer>list=new ArrayList<>();

u010720120的博客 1745

java的arraylist_Java ArrayList排序的3种方法

首页>基础教程>集合框架>ArrayList类Java ArrayList排序的3种方法1. 使用Collections.sort()方法进行排序ArrayList 存储着以字符串形式存在的国名(country name),为了对这个 ArrayList 进行排序,你需要调用 Collections.sort()方法,传递由国名构成的 ArrayList 对象。这种方...

weixin_30058099的博客 2677

java arraylist从大到小排序

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava ArrayList 从大到小排序的实现 在学习 Java 时,操作 ArrayList 是一项基本技能。在许多情况下,我们需要将 ArrayList 中的元素按照特定顺序进行排序...

weixin_29063035的博客 312

Java中如何对ArrayList进行排序呢?

Java中对ArrayList进行排序的方法分享

qq_25073223的博客 1093

Java中如何对ArrayList集合中的元素进行排序

可以利用Collections集合工具类中的方法进行排序: public static <T> void sort(List<T> list):将集合中的元素按默认规则(升序)排序 public static <T> void sort(List<T> list,Comparator<? super T>:将集合中的元素按照指定规则排序 ...

Hoshizola的博客 2万+

Java中ArrayList 元素的排序

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

后花园 1万+

java arraylist 中文排序_java的arraylist排序示例(arraylist用法)

public class Test {public static void main(String[] args) {Student zlj = new Student("丁晓宇", 21);Student dxy = new Student("赵四", 22);Student cjc = new Student("张三", 11);Student lgc = new Student("刘武", ...

weixin_29904391的博客 176

arraylist排序 java_【Java】对ArrayList排序

java如何对ArrayList中对象按照该对象某属性排序(从小到大)两种方法:方法一:Comparator comparator = new Comparator() {@Overridepublic int compare(KNNNode o1, KNNNode o2) {System.out.println("进入 compare function");// TODO Auto-genera...

weixin_29879257的博客 450
上一篇: java中List的遍历
下一篇: How to create Linked list using C/C++
MagicQIT
博客等级 码龄12年 32粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值