Java 常见数据结构

数据结构

package Data;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Set;
import java.util.Stack;


/**
 * Java 数据结构
 */
public class JavaDataStr {

	public static void main(String[] args) {
		/**
		 * 数组 Arrays 固定大小,类型相同,效率高
		 */
		int[] arrays = new int[5];	
		System.out.println(arrays[0]);
		
		/**
		 * 列表 Lists 
		 * 	//ArrayList 动态数组,可变大小
		 * 	//LinkedList 双向链表,元素间通过指针链接
		 */
		List<String> list = new ArrayList<>();
		list.add("like");
		List<Integer> list2 = new LinkedList<>();
		list2.add(85);
		System.out.println(list+" * "+list2);
		
		
		/**
		 * 集合 Set  存储补充都的元素
		 * 	HashSet--->>>无序集合 基于 HashMap实现
		 * 	TreeSet--->>>有序集合,不允许重复元素
		 */
		Set<String> hash = new HashSet<>();
		hash.add("isSet");
//		Set<Integer> tree = new TreeSet<>();
		System.out.println(hash);
		
		
		/**
		 * 映射 Maps  ---》》键值对
		 */
		Map<String, Integer> hashMap = new HashMap<>();
		hashMap.put("liming ", 01);
		System.out.println(hashMap);
		
		
		/**
		 * 栈 Stack
		 * 	--->>>后进先出
		 */
		Stack<Integer> stack = new Stack<>();
		stack.add(99);
		stack.add(88);
		System.out.println(stack);
		
		/**
		 * 队列 Queue --->>> 先进先出原色
		 * 	常见实现 LinkedList  PriorityQueue ArrayDeque
		 */
		Queue<String> queue = new LinkedList<>();
		queue.add("linked");
		System.out.println(queue);
		
		
		/**
		 * 堆 Heap  优先队列的基础,可以实现最大堆和最小堆
		 */
		PriorityQueue<Integer> minHeap = new PriorityQueue<>();
		PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
		
		
		/**
		 * 树 Trees
		 * 		 提供了 TreeNode 类型,可以用于构建二叉树等数据结构
		 */
		class TreeNode{
			int val;
			TreeNode left;
			TreeNode right;
			TreeNode(int x){
				val = x;
			}
		}
		
		
		
		

	}

}

集合的遍历

Map集合遍历
import java.util.HashMap;
import java.util.*;
import java.util.Map;

/**
 * 集合遍历
 */
public class MapTest {

	public static void main(String[] args) {
		
		// Map集合遍历
		Map<Integer, String> map = new HashMap<>();
		map.put(20025, "pony");
		map.put(20008, "Jackie");
		map.put(20006, "Sephirex");
		map.put(20015, "George");
		map.put(20028, "Karl_Marx");
		
		//第一种:二次取值
		System.out.println("①:通过 Map.keySet遍历key和value");
		for(Integer key : map.keySet()) {
			System.out.println("key="+key+ " value="+map.get(key));
		}
		
		//第二种:
		System.out.println("②:通过Map.entrySet使用iterator遍历key和value");
		Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
		while(it.hasNext()) {
			Map.Entry<Integer, String> entry = it.next();
			System.out.println("key:"+entry.getKey()+" value:"+entry.getValue());
		}
		
		
		//第三种:容量大的时候使用
		System.out.println("③:通过Map.entrySet遍历key和value");
		for(Map.Entry<Integer, String> entry : map.entrySet()) {
			System.out.println("key::"+entry.getKey() + "; value::"+entry.getValue());
		}
		
		//第四种:
		System.out.println("④:通过Map.values()遍历所有的value,但不能遍历key");
		for(String v : map.values()) {
			System.out.println("values_is : "+v);
		}
		
		
		
	}
	
}

LinkedList 集合遍历
import java.util.*;

public class linkedListTest {

	public static  void main(String[] args) {
		//linkedList集合
		LinkedList<String> list = new LinkedList<String>();
		list.add("Jeff_Bezos");
		list.add("Bernard_Arnault");
		list.add("Warren_Buffett");
		list.add("Bill_Gates");
		list.add("Mukesh_Ambani");
		list.add("Elon_Musk");
		list.add("Steve_Ballmer");
		list.add("Larry_Ellison");
		System.out.println(list);
		
		//使用 addFirst()在头部添加元素
		list.addFirst("Michael_Bloomberg");
		// 使用 addLast()在尾部添加元素
		list.addLast("Carlos_Slim_Helu");
		System.out.println(list);
		
		//移除列表头部元素
		list.removeFirst();
		// 移除列表尾部元素
		list.removeLast();
		System.out.println(list);
		
		
		//获取列表开头&&结尾元素
		String first = list.getFirst();
		String end = list.getLast();
		System.out.println(first + ";" + end);
		
		
		//使用 for 配合size()方法来迭代列表中的元素
		for(int size=list.size() , i=0;i<size;i++) {
			System.out.println(list.get(i));
		}
		System.out.println("--分-割-符--");
		//使用 for-each 迭代元素
		for(String i:list) {
			System.out.println(i);
		}
		
		

	}

}

HashSet 集合遍历
import java.util.HashSet;

public class HashSetTest {

	public static void main(String[] args) {
		//HashSet 无序,不允许重复,允许null
		
		HashSet<String> sits = new HashSet<String>();
		sits.add("Thomas_Alva_Edison");
		sits.add("Cristóbal_Colón");
		sits.add("Martin_Luther");
		sits.add("Galileo_di_Vincenzo_Bonaulti_de_Galilei");
		sits.add("Leonardo_da_Vinci");
		sits.add("Darwin");
		sits.add("Fernando_de_Magallanes");
		sits.add("Isaac_Newton");
		sits.add("Isaac_Newton"); //重复的元素不会被添加
		System.out.println(sits);
		
		
		//判断元素是否存在
		boolean iscontains = sits.contains("Isaac_Newton");
		//计算大小
		int size = sits.size();
		System.out.println(iscontains + ";"+ size);
		
		//for-each迭代集合元素
		for(String i : sits) {
			System.out.println(i);
		}
		
		//删除元素
		sits.remove("Darwin");
		System.out.println(sits);
		//删除所有元素
		sits.clear();
		System.out.println(sits);
		

	}

}

HashMap 集合遍历

import java.util.HashMap;

public class HashMapTest {

	public static void main(String[] args) {
		//HashMap 无序散列表,内容(key-value),最多一条null
		
		HashMap<Integer,String> map = new HashMap<>();
		map.put(1001, "zhangsan");
		map.put(1086, "lisi");
		map.put(1023, "wangwu");
		map.put(1025, "zhaoliu");
		map.put(1099, "sunqi");
		map.put(1011, "zhouba");
		map.put(1056, "wujiu");
		map.put(1026, "zhengshi");
		System.out.println(map);
		
		//通过 key 获取 value
		String name = map.get(1023);
		System.out.println(name);
		
		//计算大小
		int size = map.size();
		System.out.println(size);
		
/*		
		
		//删除元素
		String del = map.remove(1086);
		//删除所有
		map.clear();
		System.out.println(del +";"+ map);
*/
		
		//for-each遍历 map 集合
		//key-value
		for(Integer i : map.keySet()) {
			System.out.println(i+":"+map.get(i));
		}
		
		//value值
		for(String v : map.values()) {
			System.out.println(v);
		}
		

	}

}

Iterator 遍历集合(ArrayList)
import java.util.ArrayList;
import java.util.Iterator;

public class IteratorTest {

	public static void main(String[] args) {
		// Iterator(迭代器),用于访问遍历集合; 用于迭代 ArrayList 和 HashList等集合
		/**
		 * next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。
			hasNext() - 用于判断集合中是否还有下一个元素可以访问。
			remove() - 从集合中删除迭代器最后访问的元素(可选操作)。
		 */
		
		ArrayList<String> list = new ArrayList<>();
		list.add("The_Russian_Federation");
		list.add("The_Dominion_of_Canada");
		list.add("The_United_States_of_America");
		list.add("The_Federative_Republic_of_Brazil");
		list.add("The_Commonwealth_of_Australia");
		list.add("The_Republic_of_India");
		
		//获取迭代器
//		Iterator it = list.iterator();
		Iterator<String> it = list.iterator();
		
		//输出第一个元素
//		Object fir = it.next();
//		System.out.println(fir);
		
		//循环遍历元素
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
		
		
		//删除元素
		ArrayList<Integer> num = new ArrayList<>();
		num.add(12);
		num.add(10);
		num.add(58);
		num.add(6);
		num.add(9);
		num.add(23);
		Iterator<Integer> itnum = num.iterator();
		while(itnum.hasNext()) {
			Integer i = (Integer) itnum.next();
			if(i<10) {
				itnum.remove();
			}
		}
		System.out.println(num);
		
		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值