- 浏览: 229870 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hl174:
写的不错,赞一个
在Java中字节与十六进制的相互转换主要思想有两点 -
l540151663:
也是个好方法
String为空判断
Java常见集合的归纳总结
首先来看看集合的关系:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
一、Collection接口中定义的方法
int size():获取当前集合中的元素数量
boolean isEmpty():查看当前集合中是否包含元素
不包含返回true
检查当前集合是否为空集
boolean contains(Object o):
查看当前集合中是否包含给定的元素
void clear():清空集合
boolean add(E e):向集合中添加元素
当元素成功添加到集合中返回true
boolean remove(Object o):从集合中删除给定的元素
boolean addAll(Collection c):
将给定集合中的所有元素添加到当前集合
boolean removeAll(Collection c):
删除当前集合中与给定集合中相同的元素
Iterator iterator():
获取迭代
二、List接口
1)ArrayList
1.ArrayList集合是有序的,可重复的集合,可以根据下表来取元素(下表从0开始)
2.常用方法有:
add() 增加元素
set() 修改元素的值
remove() 删除元素
indexOf() 第一个对应元素的下标
lastIndexOf() 最后一个对应元素的下标
subList(int a,int b) 取子集(操作子集会影响原集合) 下标前包含后不包含[a,b) List中的独有方法
toArray() 集合转化成数组(Arrays.toString(array)是显示该数组的方法)
2.遍历集合的统一方式:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 遍历集合的统一方式
* 迭代器模式
* @author admin
*
*/
public class IteratorDemo {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("one");
c.add("two");
c.add("three");
//java.util.Iterator
/*
* Iterator不能实例化(接口)
* 不同的集合提供了可以遍历自身元素的迭代器实现
*/
Iterator it = c.iterator();
/*
* 使用迭代器遍历集合的步骤
* 问取删
* 删不是必须的操作
*/
//问问集合是否还有元素可以遍历
while(it.hasNext()){
//取出这个元素
Object element = it.next();
//每次调用next()方法前都应先确保hasNext()为true
// element = it.next();
System.out.println(element);
}
}
}
2)LinkedList
1.Queue接口定义了队列存取元素的基本方法,基于LinkedList的实现原理,它非常适合队列的特性。
队列,遵循先进先出原则.
1>.Queue常用方法
offer() 向队列末尾追加新元素
poll() 获取队首元素,获取后该元素就从队列中被删除
peek() 获取队首元素,但不从队列中删除
2.Deque 双端队列,两端都可以进出队但当我们约束从队列的一端进出队时,就形成了另一种存取模式
先进后出原则,这就是栈结构
1>.Deue常用方法
push() 压入元素
pop() “弹出"栈顶元素(注意,当栈中没有元素的时候pop方法会引发异常)
三、Map接口
Map中的key不允许重复。
1)HashMap 一个多行两列的表格存储元素以 key-value对的形式,散列算法实现的Map。
1>常用方法:
put() 存放元素
toString() HashMap重写了toString(),格式为{key1=value1,key2=value2,....}
get(key) 取对应key值的元素的值
boolean containsKey(Object k) 查看当前Map中是否包含给定的key
boolean containsValue(Object v) 查看当前Map中是否包含给定的value
4>HashMap的遍历
public class IterateMapDemo {
public static void main(String[] args) {
Map<Integer,String> map
= new HashMap<Integer,String>();
map.put(1, "一");
map.put(2, "二");
map.put(3, "三");
map.put(4, "四");
map.put(5, "五");
/*
* 获取Map中所有的key
* Set keySet()
* 获取一个Set集合,该集合中存放当前Map中的所有key
*/
Set<Integer> keys = map.keySet();
for(Integer key : keys){
System.out.println("key:"+ key);
}
/*
* 遍历每组键值对
* Map中每组键值对,使用一个Entry实例保存的
* Set entrySet()
* 获取一个Set集合,其中每一个元素是一个Entry的
* 实例,而每一个Entry的实例都包含着两个内容
* 分别是key与value
*/
//java.util.Map.Entry
Set<Entry<Integer,String>> entrySet
= map.entrySet();
for( Entry<Integer,String> entry : entrySet ){
System.out.println(
"key:" + entry.getKey() + "," +
"value:" + entry.getValue()
);
}
/*
* Collection values()
* 遍历所有的value,这个操作很少用
*/
Collection<String> values = map.values();
for(String value : values){
System.out.println("value:" + value);
}
}
3>HashMap关于性能的几个名词
Capacity 容量: Hashmap中数组的长度
Initial capacity 初始容量:创建HashMap时,
数组的默认大小,16。
size 大小:HashMap中的元素数量
load factor 加载因子:默认值0.75
是一个比值 size/capacity
每当size/capacity达到加载因子时,数组扩容
并且对原数组中的数据重新进行散列算法并存入
扩容后的数组中
四、Set集合的实现类
1)HashSet
使用散列算法实现的
存放元素的顺序与元素在集合中的顺序不一致 但是元素在不改变的情况下,在集合中的顺序是一致 的
Set集合的不重复的集合。
1>.HashSet常用方法
add() 添加元素
remove() 删除元素
注意:a.一般循环遍历的时候删除Set集合使用用迭代器的remove()方法,不能直接调用 Set.remove(e)否则会报异常.
b:存放元素时是根据元素的hashcode()方法的返回值进行的,所以要保证equals方法 为ture的元素应具有相同的hashcode
c:尽可能不要在元素存入集合后修改该元素的内容防止hashcode值发生变化导致不 能正确访问
1)TreeSet
使用二叉树实现的
五、集合的排序
1)ArrayList排序
使用集合的工具类 Collections.sort(list)方法做自然排序。
2)实现Comparator接口
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
* Comparable接口与Comparator接口
*/
public class ComparableDemo {
public static void main(String[] args) {
//实现该类后,子类是可比较的
Comparable c;
/*
* 当我们需要排序的元素自身已经实现了Comparable
* 接口,并且定义好了比较规则,但这种比较规则不能
* 满足我们对于排序的需求是,我们就需要提供一种
* 额外的比较规则,这时候我们就需要使用Comparator
*/
List<String> list = new ArrayList<String>();
list.add("Killer");
list.add("adam");
list.add("cark");
list.add("marry");
list.add("Boss");
list.add("Jazz");
list.add("jason");
list.add("mark");
list.add("bill");
System.out.println(list);
Collections.sort(list);
System.out.println(list);
/*
* 不能够满足我们的希求,我们希望字母少的在前
* 字母多的在后
*/
MyComparator comparator = new MyComparator();
/*
* 使用Collections的重载sort方法
*/
Collections.sort(list, comparator);
System.out.println(list);
}
}
/**
* 为字符串提供额外的比较规则
* @author admin
*
*/
class MyComparator implements Comparator<String>{
/**
* 根据字符串的长度进行比较
*/
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
}
首先来看看集合的关系:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
一、Collection接口中定义的方法
int size():获取当前集合中的元素数量
boolean isEmpty():查看当前集合中是否包含元素
不包含返回true
检查当前集合是否为空集
boolean contains(Object o):
查看当前集合中是否包含给定的元素
void clear():清空集合
boolean add(E e):向集合中添加元素
当元素成功添加到集合中返回true
boolean remove(Object o):从集合中删除给定的元素
boolean addAll(Collection c):
将给定集合中的所有元素添加到当前集合
boolean removeAll(Collection c):
删除当前集合中与给定集合中相同的元素
Iterator iterator():
获取迭代
二、List接口
1)ArrayList
1.ArrayList集合是有序的,可重复的集合,可以根据下表来取元素(下表从0开始)
2.常用方法有:
add() 增加元素
set() 修改元素的值
remove() 删除元素
indexOf() 第一个对应元素的下标
lastIndexOf() 最后一个对应元素的下标
subList(int a,int b) 取子集(操作子集会影响原集合) 下标前包含后不包含[a,b) List中的独有方法
toArray() 集合转化成数组(Arrays.toString(array)是显示该数组的方法)
2.遍历集合的统一方式:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 遍历集合的统一方式
* 迭代器模式
* @author admin
*
*/
public class IteratorDemo {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("one");
c.add("two");
c.add("three");
//java.util.Iterator
/*
* Iterator不能实例化(接口)
* 不同的集合提供了可以遍历自身元素的迭代器实现
*/
Iterator it = c.iterator();
/*
* 使用迭代器遍历集合的步骤
* 问取删
* 删不是必须的操作
*/
//问问集合是否还有元素可以遍历
while(it.hasNext()){
//取出这个元素
Object element = it.next();
//每次调用next()方法前都应先确保hasNext()为true
// element = it.next();
System.out.println(element);
}
}
}
2)LinkedList
1.Queue接口定义了队列存取元素的基本方法,基于LinkedList的实现原理,它非常适合队列的特性。
队列,遵循先进先出原则.
1>.Queue常用方法
offer() 向队列末尾追加新元素
poll() 获取队首元素,获取后该元素就从队列中被删除
peek() 获取队首元素,但不从队列中删除
2.Deque 双端队列,两端都可以进出队但当我们约束从队列的一端进出队时,就形成了另一种存取模式
先进后出原则,这就是栈结构
1>.Deue常用方法
push() 压入元素
pop() “弹出"栈顶元素(注意,当栈中没有元素的时候pop方法会引发异常)
三、Map接口
Map中的key不允许重复。
1)HashMap 一个多行两列的表格存储元素以 key-value对的形式,散列算法实现的Map。
1>常用方法:
put() 存放元素
toString() HashMap重写了toString(),格式为{key1=value1,key2=value2,....}
get(key) 取对应key值的元素的值
boolean containsKey(Object k) 查看当前Map中是否包含给定的key
boolean containsValue(Object v) 查看当前Map中是否包含给定的value
4>HashMap的遍历
public class IterateMapDemo {
public static void main(String[] args) {
Map<Integer,String> map
= new HashMap<Integer,String>();
map.put(1, "一");
map.put(2, "二");
map.put(3, "三");
map.put(4, "四");
map.put(5, "五");
/*
* 获取Map中所有的key
* Set keySet()
* 获取一个Set集合,该集合中存放当前Map中的所有key
*/
Set<Integer> keys = map.keySet();
for(Integer key : keys){
System.out.println("key:"+ key);
}
/*
* 遍历每组键值对
* Map中每组键值对,使用一个Entry实例保存的
* Set entrySet()
* 获取一个Set集合,其中每一个元素是一个Entry的
* 实例,而每一个Entry的实例都包含着两个内容
* 分别是key与value
*/
//java.util.Map.Entry
Set<Entry<Integer,String>> entrySet
= map.entrySet();
for( Entry<Integer,String> entry : entrySet ){
System.out.println(
"key:" + entry.getKey() + "," +
"value:" + entry.getValue()
);
}
/*
* Collection values()
* 遍历所有的value,这个操作很少用
*/
Collection<String> values = map.values();
for(String value : values){
System.out.println("value:" + value);
}
}
3>HashMap关于性能的几个名词
Capacity 容量: Hashmap中数组的长度
Initial capacity 初始容量:创建HashMap时,
数组的默认大小,16。
size 大小:HashMap中的元素数量
load factor 加载因子:默认值0.75
是一个比值 size/capacity
每当size/capacity达到加载因子时,数组扩容
并且对原数组中的数据重新进行散列算法并存入
扩容后的数组中
四、Set集合的实现类
1)HashSet
使用散列算法实现的
存放元素的顺序与元素在集合中的顺序不一致 但是元素在不改变的情况下,在集合中的顺序是一致 的
Set集合的不重复的集合。
1>.HashSet常用方法
add() 添加元素
remove() 删除元素
注意:a.一般循环遍历的时候删除Set集合使用用迭代器的remove()方法,不能直接调用 Set.remove(e)否则会报异常.
b:存放元素时是根据元素的hashcode()方法的返回值进行的,所以要保证equals方法 为ture的元素应具有相同的hashcode
c:尽可能不要在元素存入集合后修改该元素的内容防止hashcode值发生变化导致不 能正确访问
1)TreeSet
使用二叉树实现的
五、集合的排序
1)ArrayList排序
使用集合的工具类 Collections.sort(list)方法做自然排序。
2)实现Comparator接口
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
* Comparable接口与Comparator接口
*/
public class ComparableDemo {
public static void main(String[] args) {
//实现该类后,子类是可比较的
Comparable c;
/*
* 当我们需要排序的元素自身已经实现了Comparable
* 接口,并且定义好了比较规则,但这种比较规则不能
* 满足我们对于排序的需求是,我们就需要提供一种
* 额外的比较规则,这时候我们就需要使用Comparator
*/
List<String> list = new ArrayList<String>();
list.add("Killer");
list.add("adam");
list.add("cark");
list.add("marry");
list.add("Boss");
list.add("Jazz");
list.add("jason");
list.add("mark");
list.add("bill");
System.out.println(list);
Collections.sort(list);
System.out.println(list);
/*
* 不能够满足我们的希求,我们希望字母少的在前
* 字母多的在后
*/
MyComparator comparator = new MyComparator();
/*
* 使用Collections的重载sort方法
*/
Collections.sort(list, comparator);
System.out.println(list);
}
}
/**
* 为字符串提供额外的比较规则
* @author admin
*
*/
class MyComparator implements Comparator<String>{
/**
* 根据字符串的长度进行比较
*/
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
}
发表评论
-
Connected to the target VM, address: '127.0.0.1:52445', transport: 'socket' 错误:
2018-01-16 17:23 4760把 C:\Program Files (x86)\JetBra ... -
activemq Unrecognized Windows Sockets error: 10106: Socket creation failed
2018-01-16 17:27 93630-Nov-2017 22:45:52.892 严重 [ma ... -
Twitter的分布式自增ID算法snowflake (Java版)
2017-04-06 10:59 536概述 分布式系统中, ... -
gd总结20170104
2017-01-04 12:13 3361:tree获取选中的值,天窗项目-告警列表 $(functi ... -
java调优20161229
2016-12-29 20:03 4391:尽量减少对变量的重复计算 明确一个概念,对方法的调用,即 ... -
java2,8,10,16进制转换
2016-12-19 19:34 499A、十进制转换其他 十进制转成二进制 Integ ... -
java 修饰符
2016-12-06 22:20 406Java中共有四种访问限制修饰符:private,public ... -
java集合总结20161203
2016-12-03 15:26 5141:list 有序集合,元素 ... -
java常用集合总结
2016-12-03 14:55 530java常用集合总结 1、线程安全 线程安全就是说多线程访 ... -
设计模式总结1
2016-12-03 14:50 5811:像上转型================= 1.1定义抽象 ... -
pinyin4j
2016-12-02 15:40 418package cn.com.iotrust.common.u ... -
java IO流学习总结
2016-11-11 17:54 462Java中的流,可以从不同 ... -
JAVA泛型
2016-11-08 23:00 537泛型就是变量类型的参数化。在使用泛型前,存入集合中的元素可以是 ... -
maven总结20160925
2016-09-25 09:45 6701:安装后查看maven版本 mvn -version(或者 ... -
HTTP请求原理介绍
2016-09-20 19:19 617HTTP(HyperText Transfer Protoco ... -
post和get的区别
2016-09-10 22:35 4321. get是从服务器上获取数据,post是向服务器传送数据。 ... -
mysql 生成一个临时日历表
2016-08-26 13:32 988begin declare indexdate DATE; s ... -
tomcat内存设置
2016-08-18 17:46 368tomcat内存设置 -------------------- ... -
页面图表显示
2016-08-05 11:15 5581:百度echarts http://echarts.baid ... -
java list 对象 值 排序
2016-07-29 14:41 736/** * 排序算法 */ public stati ...
相关推荐
"Java集合详解" Java 集合是 Java 编程语言中最重要和最常用的数据结构之一。它提供了多种方式来存储和操作数据,从而提高了程序的效率和可读性。本文将对 Java 集合的基本概念、实现原理和常用方法进行详细的解释...
### Java常见错误集合以及描述 在Java开发过程中,开发者经常会遇到各种各样的错误与异常,这些错误如果不能得到及时有效的处理,将会影响程序的稳定性和性能。本文将针对一些常见的Java错误进行归纳总结,并提供...
Java的基础知识包括语法、面向对象特性(封装、继承、多态)、异常处理、输入/输出流以及集合框架。了解基本类型、类、接口、包的概念是Java学习的起点。异常处理是程序中必不可少的部分,用于捕获和处理运行时错误...
常见的线程安全技术有 volatile、Atomic类、Lock(如ReentrantLock)以及并发集合(如ConcurrentHashMap)等。 8. **死锁**: 多个线程相互等待对方释放资源,导致无法继续执行的状态。避免死锁的关键是遵循四个...
Java面试题归纳主要涵盖了许多核心的Java编程概念和技术,这些是面试官在招聘Java开发者时经常询问的主题。以下是一些重要的知识点,它们可能出现在面试题中: 1. **基础语法**:包括变量、数据类型、运算符、流程...
这篇文章主要针对Java初学者,旨在分享关于Java基础知识的归纳和建议。Java是一种广泛使用的编程语言,尤其在企业级应用开发中占据重要地位。对于新手来说,掌握Java的基础知识至关重要,以下是一些关键点的详细说明...
ORA-06531 是一个常见的错误信息,通常发生在尝试将集合填入未初始化的嵌套表中时。这种错误通常是由于开发者在编写 PL/SQL 语句时,忘记了某个嵌套表的初始化,导致 Oracle 无法将集合填入嵌套表中。解决这个错误的...
《Java数据结构归纳》 数据结构是计算机科学的基石,它是研究非数值计算问题中数据元素之间关系的学科。在程序设计中,数据结构与算法是密不可分的,它们共同构成了程序的基础。数据结构定义了一个数据元素集合,...
总的来说,`java.util`包提供了大量的工具和数据结构,帮助开发者高效地处理各种常见的编程任务。理解和掌握这个包的内容对于任何Java程序员来说都是非常重要的。在实际开发中,我们需要根据需求选择合适的类和接口...
根据提供的文件信息,我们可以归纳出以下关键的Java知识点: ### Java集合框架概述 #### String与StringBuffer **String**:在Java中,`String` 类代表不可变的字符序列,这意味着一旦一个 `String` 对象被创建,...
描述提到“好的Java帮助宝典”,意味着文档将是一份全面、实用的资源集合,适合不同水平的学习者或开发者参考。而“大家快来下载,有你们意想不到的惊喜”则表明文档除了包含基础的Java知识外,还可能包含一些高级...
根据提供的文件信息,我们可以归纳出以下关键的Java知识点: ### 1. Java 面试笔试题概述 文档标题“125条常见的java面试笔试题大汇总”表明这是一个收集了125个常见Java面试及笔试问题的文档。虽然描述部分的信息...
标题中的“JAVA 各种问题”表明这篇文档可能涵盖了Java编程语言中遇到...综上所述,这份文档很可能是Java开发者在日常工作中积累的经验总结,涵盖了从基础到高级的各类问题,可以帮助读者避免常见陷阱,提高编程效率。
学生学习成效方面,文档提到学生通常对课程感兴趣,能够完成作业和实验报告,但期末测试成绩分析显示,部分学生需要加强归纳总结能力,并且在没有复习题和复习范围的情况下,不能有效地复习重点内容。这一发现提示...
5. **总结归纳**:每个实例结束后,总结所学知识点,形成自己的知识体系。 总的来说,这个资源包提供了一个实践驱动的学习机会,通过140个实例,你可以全面了解Java编程,并逐步提高编程技巧。记得理论与实践相结合...
4. **集合框架接口**:Java集合框架包括四个基本接口:Collection、Set、List和Map。Collection是最基础的接口,Set不允许重复元素,List保持元素的顺序并允许重复,Map则用于键值对的存储,键是唯一的。 5. **...
XML文件解析是Java开发中的常见任务,通常用于数据交换或配置文件读取。在不允许使用第三方库的情况下,可以使用Java内置的`javax.xml.parsers`和`org.w3c.dom`包来解析XML。首先,使用`DocumentBuilderFactory`...
以下是一些面试中常见的Java面向对象知识点的详细解释: 1. **super() 与 this() 的区别**: - `super()` 用于调用父类的构造器,确保父类的初始化。 - `this()` 用于在同一个类中调用其他构造器。 2. **作用域 ...
Java编程语言是世界上最流行...5. **笔记和总结**:整理学习过程中的知识点,归纳出自己的理解和体会。 通过这样的实践,开发者将能够在实际操作中巩固理论知识,提升编程技能,并为未来更复杂的项目打下坚实的基础。
- Spring是一个轻量级的Java EE框架集合,实现了依赖注入模式,支持声明式事务管理,还提供了AOP日志系统,因此以上选项没有错误的描述。 8. **配置Hibernate事务管理器** - 在Spring中,配置Hibernate事务管理器...