List Set Map
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List Set Map相关的知识,希望对你有一定的参考价值。
【注:以下内容大部分摘自李兴华老师的Java笔记】
1.List本身属于一个接口,要想取得接口的实例化对象,那么应该通过子类实例化接口,它有两个常用子类:
ArrayList【数组实现,查询快,增删慢,线程不安全,轻量级】、 Vector【数组实现,线程安全,重量级 】。
1.1 List接口中,get()方法非常重要
List<String>all=new ArrayList<String>(); all.add("hello");//List是有序列表,允许存放重复的元素 all.add("hello"); all.add("world";) for(int x=0;x<all.size();x++){ String str=all.get(x); Sysout.out.println(str); }
1.2 List接口中提供有contains()、remove()的操作方法,这两个方法都需要实现equals()方法
public class TestList { public static void main(String[] args) { List<Dept>list=new ArrayList<Dept>(); list.add(new Dept(10,"财务部","Beijing")); list.add(new Dept(20,"技术部","Shenzhen")); list.add(new Dept(30,"财务部","HongKong")); list.remove(new Dept(30,"财务部","HongKong")); for(int x=0;x<list.size();x++){ Dept d=list.get(x); System.out.println(d); } } } class Dept{ private int dno; private String dep; private String loc; public Dept(int dno,String dep,String loc){ this.dno=dno; this.dep=dep; this.loc=loc; } @Override //如果没有覆写equals操作,将删除(第8行)不了。 public boolean equals(Object obj) { // TODO Auto-generated method stub if(this==obj)return true; if(obj==null)return false; if(!(obj instanceof Dept))return false; Dept dept=(Dept)obj; return this.dno==dept.dno&&this.dep.equals(dept.dep)&&this.loc.equals(dept.loc); } @Override public String toString() { // TODO Auto-generated method stub return "编号"+this.dno+" 部门:"+this.dep+" 地点:"+this.loc; } }
1.3 一个面试题:ArrayList与Vector的区别
1.4 LinkedList是一个真正的链表实现类,其功能比ArrayList更加丰富,但大部分使用不到。(附一张重要的图)
2. Set是Collection的一个接口,里面的数据不允许出现重复,允许使用null。它有两个重要的子类,HashSet(无序)、TreeSet(有序)。一般使用HashSet。
只要在java中牵扯到一组对象的比较操作永远都使用Comparable接口来完成。
public class TestTreeSet { public static void main(String[] args) { Set<Person>set=new TreeSet<Person>(); set.add(new Person("wa",20)); set.add(new Person("xi",10)); set.add(new Person("li",10)); System.out.println(set); } } class Person implements Comparable<Person>{ private int age; private String name; public Person(String name,int age){ this.age=age; this.name=name; } @Override /* * 当年龄相同时,后面的对象会覆盖掉前面的。所以compareTo()方法不能像之前那样写 * return this.age-o.age; */ public int compareTo(Person o){ if(this.age>o.age)return 1; if(this.age<o.age)return -1; else return this.name.compareTo(o.name); } @Override public String toString() { // TODO Auto-generated method stub return "名字:"+this.name+" 年龄:"+this.age; } }
2.2 关于重复元素的说明
对于使用Comparable消除重复元素,只适合于TreeXxx类型的集合。大部分类型的集合,消除重复元素是利用Object类中的两个方法来完成。
取得hash码: public int hashCode()
对象比较:public boolean equals(Object obj)
(PS:知道即可,开发中很少使用。)
以上是关于List Set Map的主要内容,如果未能解决你的问题,请参考以下文章
ArrayList,LinkedList,Vector,Set,Map,List,HashMap,HashTable
Kotlin集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
Kotlin集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )