Collection接口:


说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

List, Set, Map是否继承自Collection接口?
      List,Set是,Map不是


测试addAll与containsAll:

import java.util.ArrayList;
import java.util.Collection;public class testAddAllandContaintsAll {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubCollection c1 = new ArrayList<String>();c1.add("java");c1.add("C++");c1.add("php");System.out.println(c1);Collection c2 = new ArrayList<String>();c2.addAll(c1);System.out.println(c2);Collection c3 = new ArrayList<String>();c3.add("java");c3.add("php");System.out.println(c1.containsAll(c3));  //true}}

使用Iterator的hasNext方法,next方法遍历集合,还有remove删除:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;  /** * iterator用法演示代码 * @author 小宇 */
public class IteratorDemo {  public static void main(String[] args) {  // TODO Auto-generated method stub  Collection<String> col = new ArrayList<String>();  col.add("令狐冲");  col.add("乃是");  col.add("豪杰之士");  //返回Iterator接口实现  Iterator<String> iter = col.iterator();  System.out.println("删除: 乃是");  while(iter.hasNext())  {  String s = iter.next();  System.out.print(s);  if(s == "乃是")  iter.remove();  }  System.out.println();  Object[] ss = col.toArray();  System.out.println("删除之后的内容");  for(int i = 0; i <ss.length;i++ )  System.out.print(ss[i]);  }
}  

新的循环方法:

import java.util.ArrayList;
import java.util.Collection;public class XinXunhuan {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubCollection<String> c = new ArrayList<String>();c.add("sb张磊");c.add("2b林卓俊");c.add("都是傻逼");for(String str:c){System.out.println(str);}}}

Collection与Collections的区别:
           Collection是集合类的上级接口,继承与他的接口主要有Set 和List。
           Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

List接口:

包括get(),set(),插入,移除,subList(),数组与list的转换

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class testList {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubList<String> list = new ArrayList<String>();list.add("古德里安");list.add("邓尼茨");list.add("曼施坦因");list.add("隆美尔");//get方法遍历listfor(int i = 0; i < list.size(); i++){System.out.println(list.get(i).toUpperCase());}String value = list.set(1, "元首");System.out.println(value);System.out.println(list);//交换一和三上的元素list.set(1,list.set(3, list.get(1)));System.out.println(list);    //插入和移除数据list.add(2,"阿道夫");System.out.println(list);  list.remove(2);System.out.println(list);//subListList<String> subList = list.subList(2, 4);System.out.println(subList);  //将list转换为数组String[] strArr = list.toArray(new String[]{});System.out.println(Arrays.toString(strArr));//将数组转换为ListString[] strArr0 = {"a","b","c"};List<String> list0 = Arrays.asList(strArr0);System.out.println(list0);}}

Collections.sort()实现排序:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;public class testSort {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubList<Integer> list = new ArrayList<Integer>();Random r = new Random(1);for(int i = 0; i < 10; i++){list.add(r.nextInt(100));}System.out.println(list);Collections.sort(list);System.out.println(list);}}

Comparator设置比较条件可以给对象元素排序

Queue:

import java.util.LinkedList;
import java.util.Queue;public class testQueue {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubQueue<String> queue = new LinkedList<String>();queue.offer("a");queue.offer("b");queue.offer("c");System.out.println(queue   );String str = queue.peek();System.out.println(str);while(queue.size() > 0){str= queue.poll();System.out.println(str +"  ");}}}

Deque:

import java.util.Deque;
import java.util.LinkedList;public class testStack {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubDeque<String> stack = new LinkedList<String>();stack.push("a");stack.push("b");stack.push("c");System.out.println(stack);String str = stack.peek();System.out.println(str);//cwhile(stack.size() > 0){str = stack.pop();System.out.print(str  + "  ");}}}

Map:

put():

get():

containsKey():

import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class testHashMap
{public static void main(String[] args){String str = "ab=43,de=56,er=8,yu=12,sd=35";String[] arr = str.split("[,=]");Map<String,Integer> map = new HashMap<String,Integer>();for(int i = 0; i < arr.length; i += 2){if(!map.containsKey(arr[i]) || Integer.parseInt(arr[i + 1]) > map.get(arr[i])){map.put(arr[i], Integer.parseInt(arr[i + 1]));}}System.out.println(map);//使用迭代key的方式遍历集合mapSet<String> keys = map.keySet();for(String key:keys){System.out.println(key + ":" + map.get(key));}}
}

Hashtable与HashMap区别:

第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。

第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

javaAPI 集合相关推荐

  1. java基础----数据结构与算法----Java API:集合 以及 排序相关API

    概述: 基本数据结构与算法在jdk中都有相应的API 数组+java.util.Arrays java中的集合类 Collection-->List+Set-->接口的实现类 Map   ...

  2. solrcloud java_SolrCloud之zookeeper中使用java代码创建集合

    javaAPI调用solrcloud上传配置和删除/创建集合.网上大多都是通过http路径调用创建,以下是通过Zookeeper+solr进行操作: ? public class SolrConfig ...

  3. java doubke类型转换为String_Java基础知识面试题大集合

    本文整理自作者:ThinkWon  链接: blog.csdn.net/ThinkWon/article/details/104390612 本文知识点目录 Java概述 何为编程 什么是Java j ...

  4. ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI

    什么是 ElasticSearch ? 数据库查询存在的问题: 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低 关键字模糊查询比较麻烦 ElasticSearch概念 • Elas ...

  5. JAVA Set接口和其常用子类HashSet集合

    Set接口,它里面的集合,所存储的元素就是不重复的. HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法. 保证HashSet集合元素的 ...

  6. 黑马程序员_java基础笔记(06)...集合

    ---------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------- JavaApi(其实就是java给我们提供的已经定义好的对象.工具对象:集合框架) ...

  7. Java集合框架使用总结

    Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看JavaAPI文档. 一.概述 数 ...

  8. elasticsearch的javaAPI之index

    Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html ...

  9. 1-17 Set集合和Map集合

    Hash表 Hash,一般翻译做"散列",也有直接音译为"哈希"的,它是基于快速存取的角度设计的,也是一种典型的**"空间换时间"**的做法 ...

最新文章

  1. numpy如何生成随机数
  2. XCTF-MISC-新手区-坚持60s
  3. Java最佳实践–高性能序列化
  4. html加密文档如何打开,Word文档加密打不开怎么办?
  5. Java面试之五大框架的理解
  6. flutter能开发游戏吗_不用 H5,闲鱼 Flutter 如何玩转小游戏?-阿里云开发者社区...
  7. Unbuntu学习笔记之安装vmware tools
  8. Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
  9. 递推DP UVA 473 Raucous Rockers
  10. android下修改hosts文件 (转自阿辉)
  11. Epicor ERP 学习笔记
  12. 【问题解决】电脑微信聊天记录备份时显示不在同一网络(电脑LAN,手机WIFI)
  13. mysql单表历史记录_Mysql之单表记录查询
  14. LiveData的使用及详解
  15. 几何基础 罗德里格公式
  16. 华为云电脑+teamviewer ssh实现手机远程操控服务器
  17. Python 机器学习 | 超参数优化 黑盒(Black-Box)非凸优化技术实践
  18. linux运维是什么
  19. PMP考前冲刺2.20 | 2023新征程,一举拿证
  20. DC Scenario

热门文章

  1. Rubber Ducky简介
  2. 夏季咽喉肿痛,上火原因和治疗途径
  3. 大学图书馆空间再造与服务创新研究
  4. 数据库课程设计:图书借阅系统(Java+MySQL)
  5. 服务器如何防御攻击?
  6. 韩钰带你一起走进电商世界之淘宝店铺设计尺寸规范
  7. MySQL使用Navicat自动生成ER图
  8. 初出茅庐的第一篇文章
  9. 学堂在线答案计算机应用基础,2018计算机应用基础随堂练习与答案.pdf
  10. 如何使用VNC进行远程桌面控制