ArrayList元素的排序 java 集合

1.新建项目,新建Man类,添加属性

2.在代码编辑区域右键,选中source,自动生成setter,getter方法,以及构造函数(类似操作,选中generate constructor using field...)

3.勾选相应的属性,确认即可,很方便。

结果如下图:

Man.java代码如下:

 1 public class Man {
 2
 3     private String name;
 4     public String getName() {
 5         return name;
 6     }
 7     public void setName(String name) {
 8         this.name = name;
 9     }
10     public int getHeight() {
11         return height;
12     }
13     public void setHeight(int height) {
14         this.height = height;
15     }
16     private int height;
17
18     public Man(String name, int height) {
19         super();
20         this.name = name;
21         this.height = height;
22     }
23
24
25
26 }

新建Test.java

添加代码:

import java.util.ArrayList;

public class Test {

    public static void main(String[] args) {

        ArrayList<Man> arr=new ArrayList<>();//新建动态链表

        //创建4个对象
        Man man_exam1=new Man("高个子",185);
        Man man_exam2=new Man("中个子",175);
        Man man_exam3=new Man("矮个子",165);
        Man man_exam4=new Man("高个子",195);

        //随意添加到动态数组里面
        arr.add(man_exam1);
        arr.add(man_exam4);
        arr.add(man_exam3);

        //打印查看
        for (Man man : arr) {
            System.out.println(man.getName()+man.getHeight());
        }

    }

运行输出如下结果:

高个子185
高个子195
矮个子165

可以看到是乱序的。现在对其排序:

新建类:Compare.java

代码:

 1 import java.util.Comparator;
 2
 3 public class Compare implements Comparator{
 4
 5      public int compare(Object obj0, Object obj1) {
 6           Man s1=( Man)obj0;
 7           Man s2=( Man)obj1;
 8
 9           if(s1.getHeight()<=s2.getHeight())
10                   return 1;
11
12           return -1;
13      }
14
15 }

在Test.java中加入如下代码(对象已经存放在动态数组arr里面,执行如下代码后arr中已经是排好序的):

 Compare comparator=new Compare(); Collections.sort(arr, comparator);

  

最终完整版Test.java代码:

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

public class Test {

    public static void main(String[] args) {

        ArrayList<Man> arr=new ArrayList<>();//新建动态链表

        //创建4个对象
        Man man_exam1=new Man("高个子",185);
        Man man_exam2=new Man("中个子",175);
        Man man_exam3=new Man("矮个子",165);
        Man man_exam4=new Man("高个子",195);

        //随意添加到动态数组里面
        arr.add(man_exam1);
        arr.add(man_exam4);
        arr.add(man_exam3);

        //打印查看
        for (Man man : arr) {
            System.out.println(man.getName()+man.getHeight());
        }

       System.out.println("排序后");
       Compare comparator=new Compare();
       Collections.sort(arr, comparator);

       for (int i=0;i<arr.size();i++){
        Man user_temp=(Man)arr.get(i);
           System.out.println(user_temp.getName()+","+user_temp.getHeight());
       }

    }
}

项目结构:

原文地址:https://www.cnblogs.com/bysking/p/9210748.html

时间: 2024-11-12 05:49:03

ArrayList元素的排序 java 集合的相关文章

Java 集合(List、Set)遍历、判断、删除元素时的小陷阱

开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 1. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素.说那么说可能也说不清楚,看以下示例: import java.util.ArrayList; import java.util.List; public class ListTest_Unwork { public static v

Java 集合框架-Vector

/* 复习集合框架: Collection |--List:有序的,可重复,有索引 |--ArrayList:底层数据结构是基于数组的,查询速度快,增删速度较慢 |--LinkedList:底层数据结构是基于链表的,查询速度慢,增删速度较快 |--Vector:ArrayList是对Vector的版本升级,Vector是线程同步的,而ArrayList是线程不同步的,需要加锁. |--Set:无序的,不可重复的,无索引 |--HashSet:底层数据结构是基于哈希表的.线程是非同步的.在存储数据

Java 集合系列之二:List基本操作

1. Java List 1. Java List重要观点 Java List接口是Java Collections Framework的成员. List允许您添加重复元素. List允许您拥有'null'元素. List接口在Java 8中有许多默认方法,例如replaceAll,sort和spliterator. 列表索引从0开始,就像数组一样. List支持泛型(类型的参数化),我们应尽可能使用它.将Generics与List一起使用将在运行时避免ClassCastException. 2

java集合之HashSet

HashSet:位于java.util包下 1 HashSet概述 特点:作为Set集合的一种,首先是无序的,不可重复的:允许存放null值:底层封装HashMap:实现是不同步的,线程不安全: 常用构造: public HashSet() :构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75. 常用方法: 1)添加功能 boolean  add(E e)  : 如果此 set 中尚未包含指定元素,则添加指定元素 2)判断功能 boolean  is

通过Java排序List集合的元素的几种方法

用Java工具类Collections的sort()方法,对List集合元素进行排序. Collections提供两种排序方法: 一.Collections.sort(List<T> list); 此方法需要泛型T这个Bean实现Comparable<T>接口,并且实现compareTo()方法排序: 二.Collections.sort(List<T> list, Comparator<? super T> c); 此方法,在泛型T这个Bean没有实现Co

Java集合排序及java集合类详解--(Collection, List, Set, Map)

1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情. 举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号.我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内

java 集合排序

http://www.cnblogs.com/standcloud/articles/2601914.html java 集合排序 Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.util.List, java.util.Comparator) 第一个方法要求所排序的元素类必须实现java.lang.Comparable接口.第二个方法要求实现一个j

java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)

说起集合,我们会潜意识里想到另外一个与之相近的名词——数组,OK!两者确实有相似之处,但也正是这点才是我们应该注意的地方,下面简单列出了两者的区别(具体功能的不同学习这篇文章后就会明白了): 数组 长度固定 既可以存储基本数据类型,也能存储引用数据类型 一个数组中的元素类型必一致 集合 长度可变 只能存储引用数据类型 一个集合中的元素类型可以是任意的引用类型 一.集合概述 Collection<E> 父接口 List<E> 子接口 ArrayList<E>类 Vecto

Java集合:List、Set和Map的区别,ArrayList和LinkedList有何区别..........

一.数组和集合的区别: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型): 集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. 数组和集合相比唯一的有点就是速度快. 二.Java集合分类: 1.Collection(接口):派生的两个子接口:List和Set List(列表):有序.可重复元素,可以插入多个null元素.实现List接口的常用类有LinkedList