javaAPI 集合
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 集合相关推荐
- java基础----数据结构与算法----Java API:集合 以及 排序相关API
概述: 基本数据结构与算法在jdk中都有相应的API 数组+java.util.Arrays java中的集合类 Collection-->List+Set-->接口的实现类 Map ...
- solrcloud java_SolrCloud之zookeeper中使用java代码创建集合
javaAPI调用solrcloud上传配置和删除/创建集合.网上大多都是通过http路径调用创建,以下是通过Zookeeper+solr进行操作: ? public class SolrConfig ...
- java doubke类型转换为String_Java基础知识面试题大集合
本文整理自作者:ThinkWon 链接: blog.csdn.net/ThinkWon/article/details/104390612 本文知识点目录 Java概述 何为编程 什么是Java j ...
- ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI
什么是 ElasticSearch ? 数据库查询存在的问题: 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低 关键字模糊查询比较麻烦 ElasticSearch概念 • Elas ...
- JAVA Set接口和其常用子类HashSet集合
Set接口,它里面的集合,所存储的元素就是不重复的. HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法. 保证HashSet集合元素的 ...
- 黑马程序员_java基础笔记(06)...集合
---------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------- JavaApi(其实就是java给我们提供的已经定义好的对象.工具对象:集合框架) ...
- Java集合框架使用总结
Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看JavaAPI文档. 一.概述 数 ...
- elasticsearch的javaAPI之index
Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html ...
- 1-17 Set集合和Map集合
Hash表 Hash,一般翻译做"散列",也有直接音译为"哈希"的,它是基于快速存取的角度设计的,也是一种典型的**"空间换时间"**的做法 ...
最新文章
- numpy如何生成随机数
- XCTF-MISC-新手区-坚持60s
- Java最佳实践–高性能序列化
- html加密文档如何打开,Word文档加密打不开怎么办?
- Java面试之五大框架的理解
- flutter能开发游戏吗_不用 H5,闲鱼 Flutter 如何玩转小游戏?-阿里云开发者社区...
- Unbuntu学习笔记之安装vmware tools
- Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
- 递推DP UVA 473 Raucous Rockers
- android下修改hosts文件 (转自阿辉)
- Epicor ERP 学习笔记
- 【问题解决】电脑微信聊天记录备份时显示不在同一网络(电脑LAN,手机WIFI)
- mysql单表历史记录_Mysql之单表记录查询
- LiveData的使用及详解
- 几何基础 罗德里格公式
- 华为云电脑+teamviewer ssh实现手机远程操控服务器
- Python 机器学习 | 超参数优化 黑盒(Black-Box)非凸优化技术实践
- linux运维是什么
- PMP考前冲刺2.20 | 2023新征程,一举拿证
- DC Scenario