list集合跟set集合的区别,set

首页 > 技术 > 作者:YD1662022-10-25 04:37:56

推荐阅读一、特性

两个接口都是继承自Collection,是常用来存放数据项的集合,主要区别如下:

  1. List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元素,而在Set中不允许重复元素存在。
  2. 与元素先后存放顺序有关,List是有序集合,会保留元素插入时的顺序,Set是无序集合。
  3. List可以通过下标来访问,而Set不能。
二、常见实现类

1. List接口

常见实现类如下:

2. Set接口

常见实现类有HashSet、TreeSet和LinkedHashSet:

 如下示例:

package javase.collection; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; class Person implements Comparable<Person>{ private int age; private String name; public Person(String name,int age) { this.name = name; this.age = age; } public String toString() { return "[" name " : " age "]"; } public int getAge() { return age; } public String getName() { return name; } @Override public int compareTo(Person person) { //返回0表示相等,则不加入TreeSet return this.age > person.getAge() ? 1 : -1; } } class Person2 { private int age; private String name; public Person2(String name,int age) { this.name = name; this.age = age; } public String toString() { return "[" name " : " age "]"; } public int getAge() { return age; } public String getName() { return name; } } class MyComp implements Comparator<Person2>{ @Override public int compare(Person2 o1, Person2 o2) { return o1.getAge() > o2.getAge() ? 1 : -1; } } public class CollectionTest { public static void main(String[] args) { // TreeSet<Person> psets = new TreeSet<>(new MyComp()); // psets.add(new Person("Bob",23)); // psets.add(new Person("Alice",36)); // psets.add(new Person("Tom",18)); // Iterator<Person> it = psets.iterator(); // while (it.hasNext()){ // System.out.println(it.next()); // } TreeSet<Person2> psets = new TreeSet<>(new MyComp()); psets.add(new Person2("Bob",23)); psets.add(new Person2("Alice",36)); psets.add(new Person2("Tom",18)); Iterator<Person2> it = psets.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } }三、相互转化

因为List和Set都实现了Collection接口的addAll(Collection<? extends E> c)方法,因此可以采用addAll()方法将List和Set互相转换;另外,List和Set也提供了Collection<? extends E> c作为参数的构造函数,因此通常采用构造函数的形式完成互相转化。

//List转Set Set<String> set = new HashSet<>(list); //Set转List List<String> list1 = new ArrayList<>(set);

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.