Java集合框架的四个接口https://blog.csdn.net/shunfa888/article/details/79832291

转载 2018年04月15日 10:16:32
接口

 

[四个接口  collection  list  set  map 的区别]
collection   存储不唯一的无序的数据
list      存储有序的不唯一的数据
set        存储无序的唯一的数据
map     以健值对的形式存储数据   以键取值  键不能重复   值可以重复
 
list接口
1.常用方法
①add方法 在列表的最后添加元素
 
②add(index.object)在此列表中的指定位置插入指定的元素。
 
③size() 返回此列表中的元素个数。
 
④get(int index)返回下标为index的元素
如果没有泛型约束,返回object类型,需要强转,如果有泛型约束,直接返回泛型类型,无需强转,
 
⑤clear方法,清除列表中的所有数据
 
⑥contains() 传入一个对象检测列表中是否含有对象
    如果传入的是string和基本数据类型,可以直接对比
    如果传入的是实体对象,则默认只对比两个对象的地址
 
⑦indexof ,传入一个对象,返回此列表该对象的第一次出现的下标,如果此列表不包含元素,则返    回-1。
    lastindexof返回最后一次
 
⑧ remove传入一个下标或一个对象,删除指定元素
如果传入下标,返回被删除的元素对象,如果下标大于   汇报下标越界
如果传入对象,则要求重写equals方法,返回true或者是false表示删除是否成功
 
⑨set  用指定的元素替换此列表中指定位置的元素。 返回被替换掉的元素对象
 
⑩subList  截取一个子列表,返回list类型
   toArray 将列表转为数组,返回一个object[]类型的数组
 
 
 
ArrayList
     实现了一个长度可变的数组,在内存空间中开辟一串连续的空间,与数组的区别在于长度可以随意修改。
这种存储结构,在循环遍历和随机访问元素的速度比较快。
 
LinkedList
使用链表结构存储数据,在插入和删除元素时速度非常快。
 
LinkedList的特有方法:
 
① addFirst(): 开头插入元素
    addLast():  结尾插入元素
 
② removeFirst(): 删除第一个元素,并返回被删除的元素。
     removeLast():  删除最后一个元素,并返回被删除的元素。
 
③ getFirst():  返回列表第一个元素,不会删除
     getLast():  返回列表最后一个元素,不会删除
 
Vector     线程安全
LinkedList   线程不安全

Set接口
常用方法:与List接口基本相同。
但是,由于Set接口中的元素是无序的,因此没有与下标相关的方法。
例如: get(index)  remove(index)   add(index,obj)  ....
 
Set接口的特点: 唯一、 无序;
 
 HashSet 底层是调用HashMap的相关方法,传入数据后,根据数据的hashCode进行散列运算,
得到一个散列值后在进行运算,确定元素在序列中存储的位置。
     HashSet如何确定两个对象是否相等?
① 先判断对象的hashCode( ),如果hashCode不同,那肯定不是一个对象。  如果hashCode相同,那继续判断equals( )方法;
② 重写equals( )方法。
 
复制代码
public boolean equals(Object obj) {
        if (this == obj)
        return true;
        if (obj == null)
        return false;
        if (getClass() != obj.getClass())
        return false;
Person other = (Person) obj;
        if (age != other.age)
        return false;
        if (id != other.id)
        return false;
        if (name == null) {
        if (other.name != null)
        return false;
        } else if (!name.equals(other.name))
        return false;
        return true;
        }            
复制代码

 

>>>所以,使用HashSet存储实体对象时,必须重写对象的hashCode( ) 和 equals( ) 两个方法!!
 
 LinkedHashSet: 在HashSet的基础上,新增了一个链表。
      用链表来记录HashSet中元素放入的顺序,因此使用迭代器遍历时,可以按照放入的顺序依次读出元素。
 
TreeSet: 将存入的元素,进行排序,然后再输出。
  如果存入的是实体对象,那么实体类必须实现Comparable接口,并重写compareTo()方法;
          或者,也可以在实例化TreeSet的同时,通过构造函数传入一个比较器:
  比较器: 一个实现了Comparator接口,并重写了compare()方法的实现类的对象。
 
   使用匿名内部类,拿到一个比较器对象。
复制代码
Set<Person>  set = new TreeSet<Person>   (new Comparator( ){
    public int compare(Person p1, Person p2){
          return p1.getId( ) - p2.getId( );
}
  });
 
复制代码

 

自定义一个比较类,实现Comparator 接口。
   Set<Person> set = new TreeSet<Person>(new Compare( ));
class Compare implements Comparator( ){
重写compare方法。
  }

 

【Comparable接口 和 Comparator接口的区别】
1、 Comparable由实体类实现,重写compareTo()方法; 
        实体类实现Comparable接口以后,TreeSet使用空参构造即可。
2、 Comparator需要单独一个比较类进行实现,重写Compare()方法。
        实例化TreeSet的时候,需要传入这个比较类的对象。
 
Map接口
Map接口特点  以健值对的形式存储数据 以及按键取值
键不能重复   值可以重复
 
Map接口常用方法
①put(key ,value)向map的最后添加一个键值对
 
②get(key) 通过键,取到一个值
 
③clear() 删除所有内容
 
④containsValue()  检测是否包含指定的值
    containsKey()      检测是否包含指定的键
 
LinkedHashSmap
可以使用链表, 用链表来记录元素放入的顺序,可以按照放入的顺序依次读出元素。
 TreeMap
根据键的顺序 进行排序后输出
如果存入的是实体对象,那么必须重写比较函数;
 
  HashMap与Hashtable的区别
 
1.Hashtable是线程安全的 (线程同步) HashMap是线程不安全的(线程不同步)
 
2.Hashtable的键不能为null  HashMap的键可以为null
 
3.HashMap继承了AbstractMap,HashTable继承Dictionary抽象类,两者均实现Map接口。
 
4.HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75。
 
5.HashMap扩容时是当前容量翻倍即:capacity*2,Hashtable扩容时是容量翻倍+1即:capacity*2+1。
 
6.两者计算hash的方法不同: 
Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模:
HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取摸:
 
7.在HashMap 中不能用get()方法来判断HashMap 中是否存在某个键,而应该用containsKey()方法来判断。Hashtable 的键值都不能 为null,所以可以用get()方法来判断是否含有某个键。
 
 
遍历map的方式

第一种

复制代码
Set<String> keys =map1.keySet();
Iterator<String> iter=keys.iterator();
while (iter1.hasNext()) {
        String key=iter.next();
        System.out.println(key+"----"+map.get(key));
}
复制代码

第二种

Collection<String> va=map.values();
Iterator<String> iter=va.iterator();
while (iter.hasNext()) {
        System.out.println(iter.next());
}

第三种

复制代码
Set<Entry<String,String>> set= map.entrySet();
Iterator<Entry<String, String>> iter=set.iterator();
① while (iter.hasNext()) {
Entry<String, String> entry=iter.next();
    //entry是Java给我们提供的一种特殊的数据类型  其实就是一个键值对
    //键就是当前这条记录的键,使用getkey()取到
    //值就是当前这条记录的值,使用getValue()取到
System.out.println(entry.getKey()+""+entry.getValue());
}

② for(Entry<String, String>  y:set){
System.out.println(y.getKey()+"----"+y.getValue());
}
 
 
复制代码

 http://www.wqv1289.top/
http://www.mxz6626.top/
http://www.npl2536.top/
http://www.vme0237.top/
http://www.edr0603.top/
http://www.kft8502.top/
http://www.kwb2561.top/
http://www.dqv1869.top/
http://www.iai9521.top/
http://www.jla2696.top/
http://www.vip1477.top/
http://www.ryc2010.top/
http://www.tpz5308.top/
http://www.gzi6562.top/
http://www.dwf8840.top/
http://www.soq5741.top/
http://www.pud6117.top/
http://www.zrv3166.top/
http://www.ylg5948.top/
http://www.evm5267.top/
http://www.mmc0244.top/
http://www.auk8793.top/
http://www.nbw1542.top/
http://www.oka2713.top/
http://www.txz2284.top/
http://www.amv5754.top/
http://www.ubb2737.top/
http://www.oim9564.top/
http://www.jhg1176.top/
http://www.ehe5445.top/
http://www.vkp0211.top/
http://www.uzy8206.top/
http://www.cnn5986.top/
http://www.nwz4782.top/
http://www.qndfr.org/
http://www.zcshr.org/
http://www.fnfdf.cc/
http://www.taoshun1688.com/

https://card.weibo.com/article/v3/editor#/history/186963
https://card.weibo.com/article/v3/editor#/history/186608
https://card.weibo.com/article/v3/editor#/history/186424
https://card.weibo.com/article/v3/editor#/history/185801
https://card.weibo.com/article/v3/editor#/history/185781
https://card.weibo.com/article/v3/editor#/history/185463
https://card.weibo.com/article/v3/editor#/history/174288
https://card.weibo.com/article/v3/editor#/history/174119
https://card.weibo.com/article/v3/editor#/history/173561
https://card.weibo.com/article/v3/editor#/history/173336
https://card.weibo.com/article/v3/editor#/history/173082
https://card.weibo.com/article/v3/editor#/history/184630
https://card.weibo.com/article/v3/editor#/history/183057
https://card.weibo.com/article/v3/editor#/history/184940
https://card.weibo.com/article/v3/editor#/history/186882
https://card.weibo.com/article/v3/editor#/history/186884
https://card.weibo.com/article/v3/editor#/history/186966
https://card.weibo.com/article/v3/editor#/history/187201
https://card.weibo.com/article/v3/editor#/history/187391
https://card.weibo.com/article/v3/editor#/history/174940
https://card.weibo.com/article/v3/editor#/history/187695
https://card.weibo.com/article/v3/editor#/history/185492
https://card.weibo.com/article/v3/editor#/history/187410
https://card.weibo.com/article/v3/editor#/history/174972
https://card.weibo.com/article/v3/editor#/history/187714
https://card.weibo.com/article/v3/editor#/history/185531
https://card.weibo.com/article/v3/editor#/history/188021
https://card.weibo.com/article/v3/editor#/history/175465
https://card.weibo.com/article/v3/editor#/history/187712
https://card.weibo.com/article/v3/editor#/history/188523
https://card.weibo.com/article/v3/editor#/history/188120
https://card.weibo.com/article/v3/editor#/history/176032
https://card.weibo.com/article/v3/editor#/history/176073
https://card.weibo.com/article/v3/editor#/history/176022
https://card.weibo.com/article/v3/editor#/history/188239
https://card.weibo.com/article/v3/editor#/history/188643
https://card.weibo.com/article/v3/editor#/history/186373
https://card.weibo.com/article/v3/editor#/history/188251
https://card.weibo.com/article/v3/editor#/history/188665
https://card.weibo.com/article/v3/editor#/history/186385
https://card.weibo.com/article/v3/editor#/history/186508
https://card.weibo.com/article/v3/editor#/history/188788
https://card.weibo.com/article/v3/editor#/history/188382
https://card.weibo.com/article/v3/editor#/history/186627
https://card.weibo.com/article/v3/editor#/history/176292
https://card.weibo.com/article/v3/editor#/history/176523
https://card.weibo.com/article/v3/editor#/history/188817
https://card.weibo.com/article/v3/editor#/history/188818
https://card.weibo.com/article/v3/editor#/history/189232
https://card.weibo.com/article/v3/editor#/history/189237
https://card.weibo.com/article/v3/editor#/history/186919
https://card.weibo.com/article/v3/editor#/history/186921
https://card.weibo.com/article/v3/editor#/history/176408
https://card.weibo.com/article/v3/editor#/history/188683
https://card.weibo.com/article/v3/editor#/history/189175
https://card.weibo.com/article/v3/editor#/history/186813
https://card.weibo.com/article/v3/editor#/history/176522

转载自http://blog.csdn.net/fei20072050104/article/details/21785565

JavaWeb: 报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path ...
  • zhaohuiyan9837
  • zhaohuiyan9837
  • 2014-12-11 21:06:53
  • 349

activiti插件(http://blog.csdn.net/y670340559/article/details/77637604)(详见)

  • 2017年08月28日 09:53
  • 11.18MB
  • 下载

例子代码 android http://blog.csdn.net/qq282133/article/details/7616809

  • 2012年05月30日 16:49
  • 151KB
  • 下载

https://blog.csdn.net/u013088062/article/details/50425018

写的非常好,受教了!转自山在岭就在,源文章链接为https://blog.csdn.net/u013088062/article/details/50425018           ...
  • forever_LX
  • forever_LX
  • 2018-04-06 19:10:48
  • 58

https://blog.csdn.net/a746742897/article/details/52413546

https://blog.csdn.net/a746742897/article/details/52413546
  • weixin_38638777
  • weixin_38638777
  • 2018-03-27 14:23:44
  • 41

http://blog.csdn.net/qq_27093465/article/details/52857307

在 IntelliJ IDEA 中这个查看一个类也就是当前类的所有继承关系,包括实现的所有的接口和继承的类, 这个继承,不仅仅是一级的继承关系,包括好几层的继承。父类的父类的父类。直到最后。 ...
  • u010935342
  • u010935342
  • 2017-05-09 14:16:53
  • 279

预测房子大小的数据http://blog.csdn.net/hlx371240/article/details/39724869

  • 2014年10月02日 11:16
  • 661B
  • 下载

Android ActionBar完全解析(转载 http://blog.csdn.net/guolin_blog/article/details/18234477)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之...
  • qq_16760985
  • qq_16760985
  • 2014-12-03 14:32:50
  • 898

Tensorflow框架卷积神经网络CNN中遇到的问题及解决

CNN的原理https://blog.csdn.net/v_july_v/article/details/51812459不理解的点:1、卷积的时候窗口是怎么移动的?步长是否会受限制?移动可以一个一个...
  • weixin_37051000
  • weixin_37051000
  • 2018-03-31 18:07:30
  • 16

Android经典文章收藏笔记3

Android经典文章收藏笔记3
  • gaolei1201
  • gaolei1201
  • 2016-01-16 00:08:01
  • 1784
收藏助手
不良信息举报
您举报文章:Java集合框架的四个接口https://blog.csdn.net/shunfa888/article/details/79832291
举报原因:
原因补充:

(最多只允许输入30个字)