首页 > 编程知识 正文

List集合和Set集合的区别

时间:2023-05-06 14:28:29 阅读:203544 作者:1423

  List集合的详细特点:https://blog.csdn.net/weixin_43741599/article/details/91357999.
  Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。HashSet类是Set接口的典型实现类,大多数时候使用Set集合时就是使用这个实现类。当向 HashSet集合中存入一个元素时, HashSet会调用该对象的 hashCode()方法来得到该对象的hashCode值。这里就体现到Set集合无序性,还有不可重复,只能插入一个null值。Set的基本的特点如下:

package com.gx.demo;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List; public class HashSetDemo {public static void main(String[] args) {HashSet<String> set = new HashSet<>();// 添加元素set.add("B");set.add("A");set.add("D");set.add("C");set.add("I");set.add("I");//它会检测是否有重复的,如果有重复的不会再添加 set.add(null);//可以放入null,但只能放入一个nullSystem.out.println("第一次添加"+set); //通过哈希值来存储列表元素的位置// 移除set.remove("I");System.out.println("删除后再打印"+set); //移除set列表中的list列表包含的元素List<String> list = new ArrayList<>();list.add("F");list.add("G");list.add("C");list.add(null);set.removeAll(list);// 输出setSystem.out.println("从set列表中移除list中的包含的元素"+set.toString());// 遍历System.out.println("foreach遍历:"); for (String string : set) { System.out.print(string + " "); }// 迭代器遍历System.out.println("nIterator 迭代器 while:"); Iterator<String> iterator = set.iterator();while (iterator.hasNext()) {System.out.print(iterator.next() + " ");}System.out.println("nIterator 迭代器 for:"); for (Iterator<String> iterator2 = set.iterator(); iterator2.hasNext();) {String string = (String) iterator2.next();System.out.print(string + " ");}// 获取元素个数System.out.println("HashSet的元素格个数:" + set.size());// HashSet中是否包含某个元素System.out.println("HashSet中是否包含某个元素:" + set.contains("F"));//清空setset.clear();System.out.println("set是否为空"+set.isEmpty()); }}

输出结果:

  由于TreeSet是有序的,也支持Comparable和Comparator两种排序方式。其实,Comparable和Comparator的使用很相似,然后在这里就不在将Comparator。下面是Comparable的使用介绍:

package com.gx.demo;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;public class SetComparable {public static void main(String[] args) {Set<PersonComparable1> persons = new TreeSet<PersonComparable1>();persons.add(new PersonComparable1("小A", 35)); persons.add(new PersonComparable1("小B", 25)); persons.add(new PersonComparable1("cbdct", 25)); persons.add(new PersonComparable1("小D", 12)); persons.add(new PersonComparable1("小X", 33)); persons.add(new PersonComparable1("小M", 33)); persons.add(new PersonComparable1("小E", 33)); Iterator<PersonComparable1> it = persons.iterator();while (it.hasNext()) {PersonComparable1 person = (PersonComparable1) it.next();System.out.println(person.getName()+"t"+person.getAge());}}}//Comparable 用来实现集合中元素的比较、排序的,Comparable 是在集合内部定义的方法实现的排序class PersonComparable1 implements Comparable<PersonComparable1> {private int age; private String name; public PersonComparable1() {}public PersonComparable1(String name, int age) {this.age = age; this.name = name;} public int getAge() { return age;} public void setAge(int age) {this.age = age; } public String getName() {return name; }public void setName(String name) {this.name = name; }public int compareTo(PersonComparable1 o) {// 从小到大 :this.age-o.age,从大到小:o.age-this.ageif (o.age != this.age) { return this.age-o.age; } else {return this.name.compareTo(o.name); }}}

输出结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。