SUMMARY | JAVA中的数据结构
String
- String类是不可修改的,创建需要修改的字符串需要使用StringBuffer(线程同步,安全性更高)或者StringBuilder(线程非同步,速度更快)。
- 可以用“+”连接String。
- 用String.format()创建格式化字符串。
ArrayList
- 动态数组,可以动态的增加或者减少元素。
- 常用操作:
- 创建:ArrayList<Type> arrayList=new ArrayList<>();
- 添加元素:add
- 获取元素:get
- 删除元素:remove
- 获取数组大小:size
- 判断是否包含某一元素:contains
- 设置元素:set
- 清空数组:clear
- 判断是否为空:isEmpty
- 遍历方式:通过下标索引效率最高
Type temp;
for(int i=0;i<arrayList.size();i++){
temp=arrayList.get(i);
}
- arrayList排序需要实现Comparator接口以实现自定义排序
Comparator<String> comparator=new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.compareTo(o2)>0) return 1;
if(o1.compareTo(o2)<0) return -1;
return 0;
}
};
Stack
- 由vector拓展而来
- 常用操作:push,peak,pop,search,isEmpty
public static void stackTest() {
Stack<String> stack=new Stack<String>();
//将元素压入栈顶
System.out.println(stack.push("haha"));
System.out.println(stack.push("yes"));
//栈顶元素的search结果为1,然后从栈顶向栈底依次递增
System.out.println(stack.search("haha"));
//查看栈顶元素
System.out.println(stack.peek());
//弹出栈顶元素并返回栈顶元素
System.out.println(stack.pop());
//判断栈是否非空
System.out.println(stack.isEmpty());
}
Queue
- 是一个接口,LinkedList实现Queue接口
- 常用操作:offer,peek,poll,isEmpty
public static void queueTest() {
//LinkedList实现了Queue接口,所以构造时使用LinKedList
Queue<String> queue=new LinkedList<String>();
//在队列尾部增加元素,并返回是否增加成功
System.out.println(queue.offer("abc"));
System.out.println(queue.offer("def"));
//返回队首元素,若队列空,则返回null;(ps:element在队列空时抛出异常)
System.out.println(queue.peek());
//弹出队首元素,并返回队首元素,若队列空则返回null
System.out.println(queue.poll());
//判断队列是否空
System.out.println(queue.isEmpty());
}
LinkedList
- 双向链表,非同步
- 常用操作:addFirst,addLast,add,getFirst,getLast,get,removeFirst,removeLast,remove,isEmpty
public static void linkedlistTest() {
LinkedList<String> linkedList=new LinkedList<String>();
//在链表头部加,尾部加,任意位置加元素
linkedList.addFirst("haha");
linkedList.addLast("yali");
linkedList.add(1, "good");
//输出链表
System.out.println("first element:"+linkedList.getFirst());
System.out.println("last element:"+linkedList.getLast());
for(int i=0;i<linkedList.size();i++) System.out.println(linkedList.get(i));
//删除任意位置,头部,尾部的链表元素
linkedList.remove(1);
linkedList.removeFirst();
linkedList.removeLast();
//判断链表是否空
System.out.println(linkedList.isEmpty());
}
HashMap
- 非同步
public static void hashmapTest() {
HashMap<String, Integer> hashMap=new HashMap<String, Integer>();
//向哈希表中添加元素
hashMap.put("tp", 123);
hashMap.put("zp", 567);
System.out.println(hashMap);
//通过迭代器便利哈希表
for(Iterator<Entry<String, Integer>> iterator=hashMap.entrySet().iterator();iterator.hasNext();){
Entry<String, Integer> entry=iterator.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
//查找哈希表中是否有该键
System.out.println(hashMap.containsKey("he"));
//查找哈希表是否有该值
System.out.println(hashMap.containsValue(567));
//删除哈希表中的键值对
hashMap.remove("tp");
System.out.println(hashMap);
}
SUMMARY | JAVA中的数据结构的更多相关文章
- java中的数据结构(集合|容器)
对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...
- [转]详细介绍java中的数据结构
详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各 ...
- 详细介绍java中的数据结构
详细介绍java中的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个 ...
- Java中的数据结构及排序算法
(明天补充) 主要是3种接口:List Set Map List:ArrayList,LinkedList:顺序表ArrayList,链表LinkedList,堆栈和队列可以使用LinkedList模 ...
- 动图+源码,演示Java中常用数据结构执行过程及原理
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...
- 动图+源码,演示 Java 中常用数据结构执行过程及原理
阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想 ...
- Java中的数据结构有哪些?HashMap的工作原理是什么?
Java中常用数据结构 常用的数据结构有哈希表,线性表,链表,java.util包中有三个重要的接口:List,Set,Map常用来实现基本的数据结构 HashMap的工作原理 HashMap基于ha ...
- Java中的数据结构-HashMap
Java数据结构-HashMap 目录 Java数据结构-HashMap 1. HashMap 1.1 HashMap介绍 1.1.1 HashMap介绍 1.1.2 HashMap继承图 1.2 H ...
- 18、Java中的 数据结构
Java2中引入了新的数据结构 集合框架 Collection,下一节再谈论(非常重要,面试也常问). 1.枚举 (Enumeration) 1.1 Enumeration 源码: public in ...
随机推荐
- electron-vue中关闭烦人的es语法检查
本项目环境是 electron-vue搭建的项目,项目结构根vue-cli创建的项目结构稍微有所不同 主要修改的地方有3个 把这3个文件里面的以下代码全部删掉 { test: /\.(js)$/, e ...
- NX二次开发-UFUN拾取平面对话框UF_UI_specify_plane
#include <uf.h> #include <uf_ui.h> UF_initialize(); //拾取平面对话框 ] = { , , , , , , , , }; ] ...
- hdu多校第六场1005 (hdu6638) Snowy Smilel 线段树/区间最大和
题意: 给定一个矩阵,矩阵上有若干点,每个点有正或负的权值,找一个方框框住一些点使得方框中点权值最大. 题解: 离散化横纵坐标,容易将这个问题转化为在矩阵上求最大和子矩阵的问题. 普通的n*n的矩阵的 ...
- [转]ThinkPHP分页实例
很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. 控制器中的代码: $db = M("cost" ...
- Linux环境下Jmeter 报错:Unable to get local host IP address
主要是没有在host中配置本机ip hostname查看本机名 [root@test task]# hostname test [root@test task]# 打开 [root@test task ...
- 【POJ】2492 A Bug's Life
题目链接:http://poj.org/problem?id=2492 题意:给你n个虫子,m组实验.让你帮科学家找一下有没有虫子是同性恋. 题解:假设x是一个性别,x+n为另一个性别.如果在同性的集 ...
- MySQL数据库之DML(数据操作语言)
对表记录的增删改 1.MySQL之DML创建数据表user create table user( id int unsigned not null auto_increment primary key ...
- java字符串简单介绍
String:String对象初始化之后不可变线程安全简单的字符串操作使用String效率更高 StringBuffer:StringBuffer对象初始化之后可改变线程安全频繁的字符串操作可以使用S ...
- AtCoder Beginner Contest 132 E - Hopscotch Addict
bfs 位置+状态 just need to calculate min value(only it is useful), so O(1*x) 挺有趣的一道题... #include <cst ...
- P1820 寻找AP数
P1820 寻找AP数两个性质,分解质因数后,连续,且指数递减,dfs就完了 #include <iostream> #include <cstdio> #include &l ...