精华内容
下载资源
问答
  • set集合排序
    千次阅读
    2014-04-11 19:42:36

        是的!不仅list是有序集合,set也可以变为有序集合。

        废话少说,先上代码!

    	/**
    	 * 给字符串时间的set排序
    	 * @return 有序的set集合
    	 */
    	public static Set getSort(){
    
    		Set<String> st = new TreeSet<String>(new Comparator()
    		{
    			public int compare(Object o1, Object o2) {
    				String time1 = o1.toString();
    				String time2 = o2.toString();
    				if (DataFormat.stringToMillss(time1) > DataFormat.stringToMillss(time2))
    				  {
    				   return 1;
    				  }
    				  else if (DataFormat.stringToMillss(time1) == DataFormat.stringToMillss(time2))
    				  {
    				   return 0;
    				  }
    				  else
    				  {
    				   return -1;
    				  }
    			}
    			
    		});
    		
    		return st;
    	
    	}
    
        然后把你需要排序的set放入到以上方法返回的set中:
       
      //获取一个有序的set集合
    		Set<String> st = getSort();
    		
    		//将分组后返回的每条时间记录放入到有序的set集合中
    		st.addAll(partdoMap.keySet());

        partdoMap.keySet()就是一个无序的set集合。

        partdoMap.keySet()我是放的时间字符串,然后进行排序。大家其实看到了,compare()中两个参数都是object的类型,所以其他类型数据也可以排序,请大家可以举一反三。

       DataFormat.stringToMillss( )

        此方法是本人写的一个将时间字符串转为毫秒数的方法,与本DEMO无关。

        欢迎大家留言!


    更多相关内容
  • Set集合排序

    千次阅读 2021-03-05 23:01:36
    TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。通俗一点来说,就是可以按照排序后的列表显示,也可以按照指定的规则排序Set set = new ...

    TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。通俗一点来说,就是可以按照排序后的列表显示,也可以按照指定的规则排序。

    Set set = new TreeSet();

    set.add("f");

    set.add("a");

    set.add("b");

    set.add("c");

    set.add("d");

    set.add("e");

    System.out.println(set);

    1

    2

    3

    4

    5

    6

    7

    8

    输出:[a, b, c, d, e, f] ,按照排序后输出

    若想它倒序输出,可以指定一个规则让他倒序输出

    public class TreeSetTest3 {

    public static void main(String[] args) {

    Set set = new TreeSet(new MyComparator());

    set.add("a");

    set.add("b");

    set.add("c");

    set.add("d");

    set.add("e");

    set.add("A");

    for(Iterator iterator = set.iterator();iterator.hasNext();){

    System.out.print(iterator.next()+" ");

    }

    }

    }

    class MyComparator implements Comparator{

    @Override

    public int compare(String o1, String o2) {

    return o2.compareTo(o1);//降序排列

    }

    }

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    输出:e d c b a A

    如果Set集合中放入的是我们自己定义的一个类类型呢?

    注意:一定要定义一个排序规则类实现Comparator接口,与上面的方法类似

    public class TreeSetTest2 {

    public static void main(String[] args) {

    Set set = new TreeSet(new PersonComparator());

    Person p1 =  new Person(10);

    Person p2 =  new Person(20);

    Person p3 =  new Person(30);

    Person p4 =  new Person(40);

    set.add(p1);

    set.add(p2);

    set.add(p3);

    set.add(p4);

    for(Iterator iterator = set.iterator();iterator.hasNext();){

    System.out.print(iterator.next().score+" ");

    }

    }

    }

    class Person{

    int score;

    public Person(int score){

    this.score = score;

    }

    public String toString(){

    return String.valueOf(this.score);

    }

    }

    class PersonComparator implements Comparator{

    @Override

    public int compare(Person o1, Person o2) {

    return o1.score - o2.score;

    }

    }

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    输出:10 20 30 40

    如果按照一个人的分数的倒序排列,只需要更改compare方法中的o2.score-o1.score

    展开全文
  • 对ArrayList集合中的6个学生对象进行去重并按照年龄从小到大的顺序排序 Set的特性是有序不重复,使用集合去重 对Set中的年龄属性进行比较 public class Demos { public static void main(String[] args) { List...

    对ArrayList集合中的6个学生对象进行去重并按照年龄从小到大的顺序排序

    • Set的特性是有序不重复,使用集合去重
    • 对Set中的年龄属性进行比较
    public class Demos {
        public static void main(String[] args) {
            List<Student> students = new ArrayList<Student>();
            students.add(new Student("张三","男",20));
            students.add(new Student("张三","男",20));
            students.add(new Student("李四","男",11));
            students.add(new Student("李四","男",66));
            students.add(new Student("王五","女",45));
            students.add(new Student("小六","女",21));
            System.out.println(students);
    
            System.out.println("********************写法一********************");
            Set<Student> sortSet1 = new TreeSet<Student>(new Comparator<Student>() {
                @Override
                public int compare(Student o1, Student o2) {
                    return o2.compareTo(o1);
                }
            });
            sortSet1.addAll(students);
            System.out.println(sortSet1.toString());
    
            System.out.println("********************写法二********************");
            Set<Student> sortSet2 = new TreeSet<Student>(((o1, o2) ->Integer.compare(o2.getAge(), o1.getAge())));
            sortSet2.addAll(students);
            System.out.println(sortSet2.toString());
    
            System.out.println("********************写法三********************");
            Set<Student> sortSet3 = new TreeSet<Student>(Comparator.reverseOrder());
            sortSet3.addAll(students);
            System.out.println(sortSet3.toString());
    
            System.out.println("********************写法四********************");
            //这里后续用有序的list处理即可,因为流中进行了倒序处理,收集成set后会重排
            List<Student> collect = students.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
            System.out.println(collect);
        }
    }

    Student类

    public class Student implements Comparable<Student> {
        private String name;
        private String gender;
        private int age;
    
        public Student(){}
        public Student(String name, String gender, int age) {
            this.name = name;
            this.gender = gender;
            this.age = age;
        }
    
        @Override
        public int compareTo(Student s) {
            return s.getAge() - this.getAge();   // 按年龄从小到大哦排序
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Student student = (Student) o;
            return age == student.age && Objects.equals(name, student.name) && Objects.equals(gender, student.gender);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, gender, age);
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    展开全文
  • python set集合排序_Python Set集合

    千次阅读 2021-03-17 02:19:59
    Python Set集合Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,...

    Python Set集合

    Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。

    从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:

    {element1,element2,...,elementn}

    其中,elementn 表示集合中的元素,个数没有限制。 从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误。

    由于 Python 中的 set 集合是无序的,所以每次输出时元素的排序顺序可能都不相同。

    其实,Python 中有两种集合类型,一种是 set 类型的集合,另一种是 frozenset 类型的集合,它们唯一的区别是,set 类型集合可以做添加、删除元素的操作,而 forzenset 类型集合不行。

    Python 提供了 2 种创建 set 集合的方法,分别是使用 {} 创建和使用 set() 函数将列表、元组等类型数据转换为集合。

    1) 使用{}创建

    在 Python 中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,从而实现创建集合的目的,其语法格式如下:

    setname = {element1, element2,...elementn}

    举个例子:

    a = {1, 'x', 'x', (7,8,9),3}

    print(a)

    运行结果为:

    {1, (7, 8, 9), 3, 'x'}

    2) Create Set with set()

    set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式如下:

    setname = set(iteration)

    注意,如果要创建空集合,只能使用 set() 函数实现。因为直接使用一对 {},Python 解释器会将其视为一个空字典。

    访问set集合元素

    由于集合中的元素是无序的,因此无法向列表那样使用下标访问元素。访问集合元素最常用的方法是使用循环结构,将集合中的数据逐一读取出来。

    Delete set

    Like other sequence type. We can use del() to delete set as well.

    del(set1)

    Operations of Set

    1.Add Element

    To add elements to the set collection, we can use the add() provided by the set to achieve.

    for example:

    >>>setA = {'x','y','z'}

    >>>print(setA)

    >>>setA.add(147)

    {'y', 147, 'z', 'x'}

    It should be noted that the elements added by the method add() can only be numbers, strings, tuples or boolean (True and False) values. The data such as lists, dictionaries, and collections cannot be added, otherwise Python will report a TypeError

    2. Remove element

    Remove the specific element from a Set, we can use method remove() to complete it.

    setname.remove(element)

    if the element not exist in the set. the KeyError will be reported.

    >>> setA.remove('w')

    Traceback (most recent call last):

    File "", line 1, in KeyError: 'w'

    3.union, intersection, difference and symmetric difference.

    交集、并集、差集,对称差集

    >>> setA = {5,6,7}

    >>> setB = {7,8,9}

    Operation

    Operator

    Concept

    Example

    union

    &

    take the common elements of these set

    >>> setA & SetB

    {7}

    intersection

    |

    take all elements of these set

    >>> setA | setB

    {5,6,7,8,9}

    difference

    -

    Take elements in a set that are not in another set

    >>> setA - setB

    {5,6}

    >>> setB - setA

    {8,9}

    symmetric difference

    ^

    Take the elements in sets A and B that do not belong to A&B

    >>>setA ^ setB

    {5, 6, 8, 9}

    展开全文
  • set集合实现排序

    2014-03-05 23:56:47
    定义学生类,每个学生有3门课的成绩, 从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:如:zhagnsan,30,40,60计算出总成绩, 并把学生的信息和计算出的总分数高低顺序...(如果总分相同,按照姓名排序)
  • java中的各种集合排序set中TreeSet集合排序

    万次阅读 多人点赞 2019-05-03 15:06:01
    一、背景 1.软件开发过程中集合排序是比较强大的功能,会使用集合Map、Set...二、Set集合排序 1.UML类图 三、注意点 1.我们先来说下集合的各个特点: 2.List的主要特点以及用法 2.1.可以允许存储重复的对象...
  • java set集合排序

    万次阅读 2017-11-14 13:16:47
    Set set = new HashSet(); set.add("aaaa"); set.add("bbbb"); List list = new ArrayList(set) Collections.sort(list);
  • Python Set集合

    千次阅读 2021-01-14 15:38:39
    Python Set集合Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,...
  • Set集合排序

    千次阅读 2018-11-18 09:52:37
    TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。通俗一点来说,就是可以按照排序后的列表显示,也可以按照指定的规则排序Set&lt;String...
  • 关于set集合排序问题

    万次阅读 2019-03-11 23:10:42
    1.set集合 set集合是一种不包含重复元素的Collection,Set集合中主要有两个...当我们想要对set集合进行排序时,会使用到TreeSet。 2.HashSet的使用及遍历 /** * @program: * @description * @author:Mr.Jia ...
  • Set排序方法

    万次阅读 2019-04-22 21:04:28
    在讲解Set集合排序的几种方法之前,我们应该先清楚Set集合的几种类型以及特点,才能有效使用起来。 Set集合的特点 ​ Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。 ​ ...
  • Set排序的方式(常用三种,学会够用)

    千次阅读 2021-06-10 10:57:49
    在演示Set排序的代码前,要先了解 Set集合的特点: Set是个无序、不可重复的集合接口;有三个实现类: HashSet、TreeSet、LinkedHashSet; 其中TreeSet 元素是可以进行排序的; 从上面文字可知,当我们需要将Set集合进行...
  • TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。通俗一点来说,就是可以按照排序后的列表显示,也可以按照指定的规则排序。public class test { ...
  • 关于Set集合

    2020-12-22 14:28:49
    1. Set集合 1.1 Set集合概述 特征: 无序,不可重复 无序:添加顺序和存储顺序不一致,【不代表有排序效果】 不可重复: 在一个Set集合中不能出现相同元素 interface Set --| class HashSet 底层是哈希表存储数据 -...
  • 有A(id,create_time,b) B(id,name,create_time)两个bean 把这A放到set集合中,如何对这个集合进行排序?
  • JAVA8中Set排序四种写法

    千次阅读 2021-03-17 15:58:06
    第一种,平常的写法: public class App { public static void ... Set<String> set = new HashSet<>(); set.add("20180101"); set.add("20180102"); set.add("20180103"); set.add("20180104");
  • Java集合排序及java集合类详解(Collection、List、Map、Set)
  • Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan");... //放入到Set集合中 Set userset=new HashSet(); userset.add(u1); userset.add(u2); userset.add(u3);
  • 如何对日期类型的集合排序? List 根据sonarLint提示点点点可以发现新大陆!其实java8已经内置了许多比较器,可以点进去看看 List<Date> list = new ArrayList<>(); list.sort(new Comparator<...
  • //集合排序直接使用List.sort即可 //对集合元素的处理可以放在forEach中,例如:forEach(this::f2); a c [a, c] [User{age=3, name='Tom3'}, User{age=2, name='Tom2'}, User{age=1, name='Tom1'}] [User{...
  • Stream流对集合进行排序

    千次阅读 2019-10-25 12:07:55
    因为List集合是有序可重复的,默认的排序是正序,所以这里就不在演示正序的写法,如果是利用Set容器装数据的话,要对数据进行正序排序,只需要把Collections.sort(list,(a,b) -> b.getId().compareTo(a.getId()));...
  • Java集合排序及java集合类详解(Collection、List、Map、Set).pdf
  • Java集合排序及java集合类详解(Collection、List、Map、Set).doc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 346,281
精华内容 138,512
关键字:

set集合排序

友情链接: Calendar.rar