1.链表的使用

使用时需要import java.util.List 和 java.util.ArrayList

   //返回list中的元素个数
int size(); //判断list中是否包含元素,如果不包含返回true
boolean isEmpty(); //判断list中是否包含某个特定的对象
boolean contains(Object o); //以正确的顺序返回list中元素的迭代器
Iterator<E> iterator(); //返回一个包含list中所有元素的数组,数组中元素的顺序和list中的顺序一样
//这个方法可以当做array-based 和 collection-based API之间的桥梁
Object[] toArray(); //返回一个包含list中所有元素的数组,数组中元素的顺序和list中的顺序一样
//array数组的类型是确定的。如果指定的array大小不足,这个方法将会生成一个新的数组用于返回
//新数组的类型和运行时的数组类型一样
<T> T[] toArray(T[] a); //在list的末尾插入元素(实现类可以选择插入的位置)
boolean add(E e); //如果指定元素存在list中,移除list中第一次出现的指定元素(实现类可以选择具体的实现)
boolean remove(Object o); //判断list中是否包含某个集合
boolean containsAll(Collection<?> c); //将指定集合中的所有元素加到list的末尾
boolean addAll(Collection<? extends E> c); //在指定位置插入指定集合
boolean addAll(int index, Collection<? extends E> c); //删除list中包含的Collection中的所有元素
boolean removeAll(Collection<?> c); //保留list中包含的Collection中的所有元素
boolean retainAll(Collection<?> c); //将该列表的每个元素替换为将该运算符应用于该元素的结果。
default void replaceAll(UnaryOperator<E> operator); //对list中的元素排列
default void sort(Comparator<? super E> c); //删除list中的所有元素
void clear(); boolean equals(Object o); int hashCode(); //根据索引获取list中的元素
E get(int index); //用指定元素替换指定位置上的元素
E set(int index, E element); //在指定位置上增加指定元素
void add(int index, E element); //删除指定索引上的元素
E remove(int index); //获取对象的第一个索引
int indexOf(Object o); //获取对象的最后一个索引
int lastIndexOf(Object o); //返回list的list 迭代器
ListIterator<E> listIterator(); //从指定位置返回list的迭代器
ListIterator<E> listIterator(int index); //返回list的子list
List<E> subList(int fromIndex, int toIndex); //Creates a {@link Spliterator} over the elements in this list.
default Spliterator<E> spliterator()
import java.util.ArrayList;
import java.util.List; class Item {
private int count;
public Item(int count) {
this.count = count;
}
public int getCount() {
return count;
} } class Meal {
private ArrayList<Item> items = new ArrayList<Item>(); void addItem(Item item) {
items.add(item);
} int sum_count() {
int count = 0;
for (Item i : items) {
count += i.getCount();
}
return count;
} } public class BuilderPatternDemo {
public static void main(String args[]) {
Item item1 = new Item(10);
Item item2 = new Item(20);
Item item3 = new Item(30); Meal meal1 = new Meal(); meal1.addItem(item1);
meal1.addItem(item2);
meal1.addItem(item3);
System.out.println("Sum=" + meal1.sum_count());
}
}
error: List is abstract; cannot be instantiated
List<Person> maleMeet = new List<Person>();
^
应该修改为:List<Person> maleMeet = new ArrayList<Person>(); //List是个抽象类,ArrayList是List的实现子类。

参考:
https://www.cnblogs.com/cuglkb/p/7027907.html
https://www.cnblogs.com/Lxiaojiang/p/6231724.html

3.HashTable和HashMap

1.Hashtable简介
(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。
(2)Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。
(3)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。

2.使用Demo(在遍历时使用是三种遍历方式来对其进行遍历)

package ThreeWeek;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry; public class HashTableTest { public static void main(String args[]){
Hashtable<String, Integer> table = new Hashtable<String, Integer>(); //[1]添加元素
table.put("zhangsan", 22);
table.put("lisi", 33);
table.put("wangwu", 44);
table.put("houliu", 55); //[2]toString()方式打印
System.out.println(table.toString()); //[3]Iterator遍历方式1--键值对遍历entrySet()
Iterator<Entry<String, Integer>> iter = table.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)iter.next();
String key = entry.getKey();
int value = entry.getValue();
System.out.println("entrySet:"+key+" "+value);
} System.out.println("===================================="); //[4]Iterator遍历方式2--key键的遍历
Iterator<String> iterator = table.keySet().iterator();
while(iterator.hasNext()){
String key = (String)iterator.next();
int value = table.get(key);
System.out.println("keySet:"+key+" "+value);
} System.out.println("===================================="); //[5]通过Enumeration来遍历Hashtable
Enumeration<String> enu = table.keys();
while(enu.hasMoreElements()) {
System.out.println("Enumeration:"+table.keys()+" "+enu.nextElement());
} }
} /*
编译执行:
$ javac -d ./ HashTableTest.java
$ java ThreeWeek.HashTableTest {houliu=55, zhangsan=22, lisi=33, wangwu=44}
entrySet:houliu 55
entrySet:zhangsan 22
entrySet:lisi 33
entrySet:wangwu 44
====================================
keySet:houliu 55
keySet:zhangsan 22
keySet:lisi 33
keySet:wangwu 44
====================================
Enumeration:java.util.Hashtable$Enumerator@120f0be houliu
Enumeration:java.util.Hashtable$Enumerator@199d4a86 zhangsan
Enumeration:java.util.Hashtable$Enumerator@2587b08d lisi
Enumeration:java.util.Hashtable$Enumerator@6f580c3a wangwu
*/

3.继承关系

java.lang.Object
java.util.Dictionary<K, V>
java.util.Hashtable<K, V> public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { }

4.Hashtable和HashMap的区别
(1)基类不同:HashTable基于Dictionary类,而HashMap是基于AbstractMap。Dictionary是任何可将键映射到相应值的类的抽象父类,而AbstractMap是基于Map接口的骨干实现,它以最大限度地减少实现此接口所需的工作。
(2)null不同:HashMap可以允许存在一个为null的key和任意个为null的value,但是HashTable中的key和value都不允许为null。
(3)线程安全:HashMap只是单线程安全的,Hashtable是多线程安全的。
(4)遍历不同:HashMap仅支持Iterator的遍历方式,Hashtable支持Iterator和Enumeration两种遍历方式。

参考:
https://blog.csdn.net/jinhuoxingkong/article/details/52022999
http://www.importnew.com/24822.html

java中的数据结构的更多相关文章

  1. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

  2. [转]详细介绍java中的数据结构

    详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各 ...

  3. 详细介绍java中的数据结构

    详细介绍java中的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个 ...

  4. Java中的数据结构及排序算法

    (明天补充) 主要是3种接口:List Set Map List:ArrayList,LinkedList:顺序表ArrayList,链表LinkedList,堆栈和队列可以使用LinkedList模 ...

  5. 动图+源码,演示Java中常用数据结构执行过程及原理

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...

  6. 动图+源码,演示 Java 中常用数据结构执行过程及原理

    ​阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想 ...

  7. Java中的数据结构有哪些?HashMap的工作原理是什么?

    Java中常用数据结构 常用的数据结构有哈希表,线性表,链表,java.util包中有三个重要的接口:List,Set,Map常用来实现基本的数据结构 HashMap的工作原理 HashMap基于ha ...

  8. Java中的数据结构-HashMap

    Java数据结构-HashMap 目录 Java数据结构-HashMap 1. HashMap 1.1 HashMap介绍 1.1.1 HashMap介绍 1.1.2 HashMap继承图 1.2 H ...

  9. 18、Java中的 数据结构

    Java2中引入了新的数据结构 集合框架 Collection,下一节再谈论(非常重要,面试也常问). 1.枚举 (Enumeration) 1.1 Enumeration 源码: public in ...

  10. java中的数据结构 --- 集合

    集合类在Java.util包中!  在java中常用的是Set,Map,和List. 容器和迭代器 链表 集 映射

随机推荐

  1. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  2. Cracking The Coding Interview 1.1

    //原文: // // Implement an algorithm to determine if a string has all unique characters. What if you c ...

  3. 【Linux优化】Linux安装之后的优化

    yum source configmv /etc/yum.repos.d/CentOS-Base.repo{,.bkp} wget -O /etc/yum.repos.d/CentOS-Base.re ...

  4. OJ_查找二叉树

    #include<iostream>using namespace std;int n,m;int d[120];int t=1;int re;struct Node{ int data; ...

  5. suse_linux 11 sp3 安装 was7

    1.安装操作系统 suse linux 11 1.创建虚拟机 2.下一步 3.稍后安装操作系统,下一步 4.选择操作系统 5.选择存储目录 6.下一步 7.完成 8.编辑虚拟机 9.内存1G,CD/D ...

  6. MySql:触发器

    触发器 一.触发器的定义: 触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定的事件发生时,就会被M ...

  7. 关于React setState的实现原理(二)

    React中的Transaction 大家学过sql server的都知道我们可以批量处理sql语句,原理其实都是基于上一篇我们说的Datch Update机制.当所有的操作均执行成功,才会执行修改操 ...

  8. C#清理所有正在使用的资源

    namespace QQFrm{    partial class Form1    {        /// <summary>        /// 必需的设计器变量.        ...

  9. IDEA_debug窗口问题,debugger窗口消失,窗口漂浮等

  10. SQL注入之Sqli-labs系列第十四关(基于双引号POST报错注入)

    开始挑战第十四关(Double Injection- Double quotes- String) 访问地址,输入报错语句 '  ''  ')  ") - 等使其报错 分析报错信息 很明显是 ...