参考链接
数据结构是计算机中存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构往往同高效的检索算法和索引技术有关。
数据结构有很多中,按照数据的逻辑结构进行简单分类,包括线性结构和非线性结构。
线性结构就是表中各个结点具有线性关系,线性结构的特点包括:
常见的线性结构有:
一维数组、链表、栈、队列等。
非线性结构就是表中各个结点之间具有多个对应关系,非线性结构特点包括:
常见的非线性结构有:
多维数组、广义表、树和图等。
Java中定义各种类型个的数组:
public static void main(String[] args){
int[] num=new int[5]; //已知元素个数
int[] num1=new int[]{1,2,3,4,5}; //初始化
char[] num2=new char[5];
float[] num3=new float[5];
double[] num4=new double[5];
byte[] num5=new byte[5];
String[] num6=new String[5];
long[] num7=new long[5];
}
Java中数组常用方法,这些方法都是由java.util.Arrays提供的方法提供的:
Arrays.fill(num,2,4,10); //将数组填充某个元素
boolean flag=num.equals(num1); //判断数组是否相等
Arrays.sort(num1,2,4); //将数组排序
Arrays.binarySearch(num,3); //可以对排序好的数组进行二分查找
System.arraycopy(num,2,num1,2,3); //复制数组
public static void main(String[] args){
Stack stack=new Stack<>();
Stack<Integer> stack3=new Stack<>(); //添加某种类型的元素到栈中
ArrayList arrayList=new ArrayList<>();
LinkedList linkedList=new LinkedList<>();
//加入元素
stack.push(2);
stack.push(4);
stack.push(3);
stack.push(5);
//获取栈顶
stack.peek();
//删除元素——可以删除元素object也可以删除指定位置
stack.remove(2);
//移除元素
stack.pop();
//判断是否为空
boolean flag=stack.isEmpty();
//查找元素
stack.search(3);
//指定某个位置元素
stack.set(1,10);
//获取某位置元素
stack.get(3);
}
栈是Vector的一个子类,它实现了一个标准的先进后出的栈;
- 添加元素
stack.push(2);- 获取栈顶
stack.peek();- 删除元素——可以删除元素object也可以删除指定位置
stack.remove(2);- 移除元素
stack.pop();- 判断是否为空
boolean flag=stack.isEmpty();- 查找元素
stack.search(3);- 指定某个位置元素
stack.set(1,10);- 获取某位置元素
stack.get(3);
public static void main(String[] args){
Vector vector=new Vector<>();
Vector<String> vector3=new Vector<>();
//加入元素
vector.add(1,10);
//删除元素
vector.remove(2); //删除对象元素或指定位置元素
//改
vector.set(1,2); //在指定位置设置元素
//查
int num= (int) vector.get(1); //获取指定位置元素
int num1=vector.indexOf(2); //获取元素的位置
int num2=vector.lastIndexOf(2); //获取最后一个某元素的位置
//其他
vector.clear(); //清空所有元素
Vector vector1= (Vector) vector.clone(); //复制向量的一个副本
Object[] nums=vector.toArray(); //向量转为数组
int size=vector.size(); //返回元素个数
int capacity=vector.capacity(); //返回容量
boolean flag=vector.contains(2); //判断是否包含某元素
boolean flag2=vector.isEmpty(); //判断是否为空
Iterator iterator= vector.iterator(); //获取向量的迭代器
}
- 加入元素
vector.add(1,10);- 删除元素
vector.remove(2); //删除对象元素或指定位置元素- 改
vector.set(1,2); //在指定位置设置元素- 查
int num= (int) vector.get(1); //获取指定位置元素
int num1=vector.indexOf(2); //获取元素的位置
int num2=vector.lastIndexOf(2); //获取最后一个某元素的位置- 其他
vector.clear(); //清空所有元素
Vector vector1= (Vector) vector.clone(); //复制向量的一个副本
Object[] nums=vector.toArray(); //向量转为数组
int size=vector.size(); //返回元素个数
int capacity=vector.capacity(); //返回容量
boolean flag=vector.contains(2); //判断是否包含某元素
boolean flag2=vector.isEmpty(); //判断是否为空
Iterator iterator=vector.iterator(); //获取向量的迭代器
java集合框架主要有两种类型的容器:Collection和Map;Collection接口又有3中子类型:List、Set和Queue,每种都有它对应的具体实现类,常用的有ArrayList,LinkedList,HashSet,HashMap,和HashTable等。
public static void main(String[] args){
ArrayList arrayList=new ArrayList<>();
ArrayList arrayList1=new ArrayList<>();
arrayList.add(5);
arrayList.add("agdhgahs");
arrayList.add(1);
arrayList.add(10);
arrayList.add("abc");
Collections.sort(arrayList);//排序
Collections.reverse(arrayList);//反转
Collections.shuffle(arrayList);//打乱
Collections.fill(arrayList,-1);//赋值
Collections.copy(arrayList,arrayList1);//将arraylst1 copy到 arraylist中去
Collections.indexOfSubList(arrayList,arrayList1); //获取arrayList1中arrayList的位置
Collections.lastIndexOfSubList(arrayList,arrayList1);//获取arrayList1中arrayList最后出现的位置
Collections.swap(arrayList,2,4);//交换指定索引元素的位置
Collections.binarySearch(arrayList,2);//返回指定元素的索引
Collections.replaceAll(arrayList,1,"name");//替换list中指定位置的元素
}
- 排序
Collections.sort(arrayList);//排序- 反转
Collections.reverse(arrayList);//反转 + 打乱
Collections.shuffle(arrayList);//打乱- 赋值
Collections.fill(arrayList,-1);//赋值- 拷贝
Collections.copy(arrayList,arrayList1);//将arraylst1 copy到 arraylist中去- 获取
Collections.indexOfSubList(arrayList,arrayList1); //获取arrayList1中arrayList的位置
Collections.lastIndexOfSubList(arrayList,arrayList1);//获取arrayList1中arrayList最后出现的位置
Collections.binarySearch(arrayList,2);//返回指定元素的索引- 交换
Collections.swap(arrayList,2,4);//交换指定索引元素的位置
Collections.replaceAll(arrayList,1,“name”);//替换list中指定位置的元素
public static void main(String[] args){
ArrayList<Integer> arrayList=new ArrayList<>(); //常用的就是arraylist和linkedlist
LinkedList<String> linkedList=new LinkedList<>();
for(int i=0;i<5;++i){
arrayList.add(i+1);
}
for(int i=0;i<4;++i){
linkedList.add("dcb"+String.valueOf(i+1));
}
//增
arrayList.add(1,20); //在指定位置添加元素
linkedList.add(2,"shasha");
//删
arrayList.remove(2); //删除指定位置元素对象
linkedList.remove(3);
//改
arrayList.set(3,10); //在指定索引位置设置元素
linkedList.set(2,"zhangzhang");
//查
int num=arrayList.get(1);//获取指定位置的元素
int index=arrayList.indexOf(5);//返回指定元素第一次出现的索引
int lastindex=arrayList.lastIndexOf(2);//返回指定元素最后一次出现的索引
//其他
arrayList.clear();//移除所有的元素
Object[] nums=arrayList.toArray();//向量转为数组
int size=arrayList.size();//返回元素个数
boolean flag=arrayList.contains(3);//判断是否包含某元素
Iterator iterator=arrayList.iterator();//返回迭代器
boolean empty=arrayList.isEmpty();//判断是否为空
}
Java中常用的list结构有arraylist和linkedlist,它常用的方法有:
- 增
arrayList.add(1,20); //在指定位置添加元素
linkedList.add(2,“shasha”);- 删
arrayList.remove(2); //删除指定位置元素对象
linkedList.remove(3);- 改
arrayList.set(3,10); //在指定索引位置设置元素
linkedList.set(2,“zhangzhang”); + 查
int num=arrayList.get(1);//获取指定位置的元素
int index=arrayList.indexOf(5);//返回指定元素第一次出现的索引
int lastindex=arrayList.lastIndexOf(2);//返回指定元素最后一次出现的索引- 其他
arrayList.clear();//移除所有的元素
Object[] nums=arrayList.toArray();//向量转为数组
int size=arrayList.size();//返回元素个数
boolean flag=arrayList.contains(3);//判断是否包含某元素
Iterator iterator=arrayList.iterator();//返回迭代器
boolean empty=arrayList.isEmpty();//判断是否为空
public static void main(String[] args){
HashSet hashSet=new HashSet<>();
for(int i=1;i<=5;++i)
hashSet.add(10-i+3);
//增
hashSet.add(5);//在指定位置添加元素
//删
hashSet.remove(3);//删除元素对象
//其他
hashSet.clear();//移除所有的元素
Object[] nums=hashSet.toArray();//向量转为数组
int size=hashSet.size();//返回元素个数
boolean flag=hashSet.contains(3);//判断是否包含某元素
Iterator iterator=hashSet.iterator();//返回迭代器
boolean empty=hashSet.isEmpty();//判断是否为空
}
- 增
hashSet.add(5);//在指定位置添加元素- 删
hashSet.remove(3);//删除元素对象- 其他
hashSet.clear();//移除所有的元素
Object[] nums=hashSet.toArray();//向量转为数组
int size=hashSet.size();//返回元素个数
boolean flag=hashSet.contains(3);//判断是否包含某元素
Iterator iterator=hashSet.iterator();//返回迭代器
boolean empty=hashSet.isEmpty();//判断是否为空
public static void main(String[] args){
HashMap hashMap=new HashMap<>();
for(int i=1;i<=5;++i){
hashMap.put(i,"fgd"+String.valueOf(10-i+1));
}
//增
hashMap.put(1,"abc");//添加元素
//删
hashMap.remove(2);//删除元素
//改
hashMap.replace(1,"fgd10");
//查
String value= (String) hashMap.get(5);//获取元素的值
boolean flag=hashMap.containsKey(3);//判断是否有指定的key
boolean flag2=hashMap.containsValue("abc");//判断是否有指定的value
//其他
Iterator entrySet= (Iterator) hashMap.entrySet(); //返回哈希表的枚举
Iterator keySet=hashMap.keySet().iterator();//返回哈希表中的键的枚举
Iterator values=hashMap.values().iterator(); //返回哈希表中的值的枚举
hashMap.clear();//将哈希表清空
boolean empty=hashMap.isEmpty();//判断表是否为空
int size=hashMap.size();//返回哈希表的大小
}
- 增
hashMap.put(1,“abc”);//添加元素- 删
hashMap.remove(2);//删除元素- 改
hashMap.replace(1,“fgd10”);- 查
String value= (String) hashMap.get(5);//获取元素的值
boolean flag=hashMap.containsKey(3);//判断是否有指定的key
boolean flag2=hashMap.containsValue(“abc”);//判断是否有指定的value- 其他
Iterator entrySet= (Iterator) hashMap.entrySet(); //返回哈希表的枚举
Iterator keySet=hashMap.keySet().iterator();//返回哈希表中的键的枚举
Iterator values=hashMap.values().iterator(); //返回哈希表中的值的枚举
hashMap.clear();//将哈希表清空
boolean empty=hashMap.isEmpty();//判断表是否为空
int size=hashMap.size();//返回哈希表的大小
关于Queue与Deque之前总结过啦,参考这里。
关于String与StringBuffer或StringBuilder等的总结,参考这里。
这里主要总结了Java总常用的数据结构及方法,仅供参考啦!~