Java框架集合

本文深入探讨了Java集合框架中的ArrayList, LinkedList, HashSet, TreeSet和HashMap等数据结构的使用方法和特性,包括它们的优缺点、如何添加和删除元素,以及遍历集合的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ArrayList()


import java.util.ArrayList;
import java.util.Scanner;

public class Test2 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		ArrayList<String> list = new ArrayList<String>();
		while(true){
			System.out.print("Please:");
			String say = input.next();
			if (say.equals("no")){
				break;
			}
			list.add(say);
		}
		
		System.out.println("今天你说的话有:");
		for(int i=0;i<list.size();i++){//遍历list集合
			
			System.out.println(list.get(i).toString());
		}
		
		
	}

}

2.LinkedList()


import java.util.LinkedList;

public class Test3 {

	public static void main(String[] args) {
		/*
		 * LinkedList是一个双向链接结构的集合
		 * 优点:添加、删除元素时速度较快
		 * 缺点:遍历元素和随机访问元素时速度较慢 
		 */
		LinkedList list = new LinkedList();
		
		//通过add()方法添加
		list.add("张三");
		list.add("李四");
		
		list.add(2, "element");//指定的索引值来添加
		
		//list.addFirst("第一个");
		list.addLast("最后一个");
		
		//通过remove()方法删除
		//list.remove("李四");
		
		list.remove(1);// 移除此列表中指定位置上的元素。
		
		for(int i=0;i<list.size();i++){//遍历list集合
			System.out.println(list.get(i));//通过get()获取
		}
		
		
	}

}

3.HashSet ()

package 集合;

import java.util.HashSet;
import java.util.Iterator;

public class Test4 {
//它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
	//当多个数据重复时,就会只有一个数据存在,保证数据的唯一性 ,无序排列
	public static void main(String[] args) {
		HashSet hs = new HashSet();// 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。
		hs.add("王老五");
		hs.add("张三");
		hs.add("Jack");
		hs.add("Bruce");
		hs.add("Mandy");
		hs.add("王老五");
		hs.add("王老五");
		hs.add("王老五");
		hs.add("王老五");
		hs.add(new Student("Mike"));
		hs.add(new Student("Mike"));
		
		//1. 获取HashSet的迭代器
		Iterator it = hs.iterator(); // 迭代器
		while(it.hasNext()){
			Object name1 = it.next();
			//String name2 = (String) it.next();
			System.out.println(name1);
			
		}
		System.out.println("元素的数量:"+hs.size());
		
		
	}
//CTRL+shift+t 查找类型
	
	
}

4.TreeSet()

import java.util.Iterator;
import java.util.TreeSet;

public class Test5 {
	//当多个数据重复时,就会只有一个数据存在
	public static void main(String[] args) {
		TreeSet ts = new TreeSet();
		ts.add(89);
		ts.add(176);
		ts.add(325);
		ts.add(23);
		ts.add(21);
		ts.add(654);
		ts.add(654);
		ts.add(654);
		ts.add(654);
		Iterator it = ts.iterator();
		while(it.hasNext()){
			Integer number = (Integer)it.next();
			System.out.println(number);
		}
		
	}

}

5.HashMap()及Hashtable()

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;

public class Test6 {
	//HashMap<K,V>
	/*
		K - 此映射所维护的键的类型
		V - 所映射值的类型
	*/
	public static void main(String[] args) {
		
		//一个键值只能对应一个值,如果存在多个值会默认第一个放进集合的value值
		HashMap hm = new HashMap();//不要遍历
		// (键,值)对
		hm.put("CN", "中国a");
		hm.put("CN", "中国b");
		hm.put("CN", "中国c");
		hm.put("US", "美国");
		hm.put("UK", "英国");
		hm.put("DE", "德国");
		hm.put("K1", "香港1a");
		hm.put("K2", "香港2b");
		hm.put("k3", "香港3c");
		hm.put("JP", "小日本");
		hm.put("K", null);
		hm.put(null, "77777777777456");
		hm.put(null, "456");//put方法可以存在两个空值
		hm.put( "0000456",null);
		
		
		hm.remove("JP"); //根据key来删除值
		
		System.out.println("循环方式一:用key来取值");
		// 获取所有的key值
		Iterator it = hm.keySet().iterator();//激活所有的键值key
		while(it.hasNext()){	//判断还有没有下一个键值
			String key = (String)it.next();
			// 根据key来取value值
			String value = (String)hm.get(key);
			
			System.out.println("key:" + key + ", value:" + value);
		}
		
		System.out.println();
		
		System.out.println("循环方式二:用value来取直");
		Iterator it2 = hm.values().iterator();//激活所有的value值
		while(it2.hasNext()){	//判断还有没有下一个value值
				//根据value来取值
			String value = (String) it2.next();
			
			System.out.println("value:" + value);
		}
		
		System.out.println();
		
		System.out.println("循环方式三:");
		// 返回整个map,每个map里都存放的是一个实体entry
		Iterator it3 = hm.entrySet().iterator();//激活所有的实体entry
		while(it3.hasNext()){//判断还有没有下一个实体entry
			//通过实体来获取
		 	Map.Entry entry = (Map.Entry) it3.next();
		 	
		 	String key = (String)entry.getKey();//获取对应实体中的key值
		 	String value = (String)entry.getValue();//获取对应实体中的value值
		 	System.out.println("key:" + key + ", value:" + value);
		}
		System.out.println("此映射中的键-值映射关系数:"+hm.size() );

		//删除hashMap元素
		
		
		
		
		
		
		
		
		
		/*
		 *  HashMap与Hashtable的区别?
		 *  区别:
		 *  1. HashMap允许有一个null值,而Hashtable不允许
		 *  2. HashMap线程非安全,Hashtable线程安全
		 *  
		 */
		
		
		//一个键值只能对应一个值,如果存在多个值会默认第一个放进集合的value值
		Hashtable ht = new Hashtable();
	//	ht.put(null, null);
		 Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
		//		   numbers.put("one", 000001);
		//		   numbers.put("two", 000002);
				   numbers.put("one", 888);
				   numbers.put("two", 888);
				   numbers.put("88", 2);
				   numbers.put("88", 2);
				   numbers.put("three", 3);//
				   numbers.put("three", 344);//
				   numbers.put("three", 43);
				  // numbers.put(null, null);  //不允许为空值
				   /*
				    * 将指定 key 映射到此哈希表中的指定 value。键和值都不可以为 null。 
					通过使用与原来的键相同的键调用 get 方法,可以获取相应的值。

				    * */
				   //方法一:
				  for(String key : numbers.keySet()) {//遍历
					  
					  int i=(int)numbers.get(key);
					
					  System.out.println("键:"+key+"  值:"+i);
					  
				  }
				  //清除
				 // numbers.clear();
				  System.out.println("此映射中的键-值映射关系     数:"+numbers.size() ); 
				  
				  Iterator num = numbers.keySet().iterator();
				while ( num.hasNext()) {
					String key=(String)num.next();
					int values=(int)numbers.get(key);
					System.out.println(key+"\tvalue:"+values);
					//numbers.remove(key);
					
				}
	}
}

自己的路自己走,从哪跌倒就从哪爬起来,祝你学习愉快,加油伙计!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值