常用list与map,添加对Enumeration的简单使用

本文深入探讨了Java集合框架的核心组成部分,包括List、Set、Queue和Map等数据结构的特点及应用场景,并提供了具体的遍历方法和排序操作示例。

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

 

collection包含三种子类型:1.List 2.Set 3.Queue

List:ArrayList、LinkedList

ArrayList:查找效率高,插入删除效率低。有序(添加的顺序排序),可重复数据。该类也是非同步的,在多线程的情况下不要使用。

LinkedList:查找效率低,插入删除效率高,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。

例如:LinkedList Listlist=Collections.synchronizedList(newLinkedList(...));


Set :HashSet、TreeSet

HashSet:该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

TreeSet:可实现排序功能


Map:HashMap

HashMap:(key-value)key:不能重复,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。


遍历

1.遍历ArrayList  

List<Integer> list=new ArrayList<Integer>();
list.add(2);
list.add(1);
list.add(5);

for (Integer i: list) {       
    System.out.println(i);
}

for(int i = 0;i<list.size();i++){
    System.out.println(list.get(i));
}

//转换为array
Integer[] strArray = new Integer[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++){
   System.out.println(strArray[i]);
}

//使用迭代器进行相关遍历
Iterator<String> ite=list.iterator();
while(ite.hasNext()){//判断下一个元素之后有值
    System.out.println(ite.next());
}

2.遍历map

Map<String, String> map = new HashMap<String, String>();
map.put("1", "a");
map.put("2", "c");
map.put("3", "n");
      
//第一种:普遍使用,二次取值
for (String key : map.keySet()) {
    System.out.println("key = "+ key + " ===== value = " + map.get(key));
}
      
//第二种
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry<String, String> entry = it.next();
    System.out.println("key = " + entry.getKey() + " ====== value= " + entry.getValue());
}
      
//第三种:推荐,尤其是容量大时
for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println("key= " + entry.getKey() + " ======= value= " + entry.getValue());
}
    
//第四种 遍历value
for (String v : map.values()) {
    System.out.println("value = " + v);
}

对于排序:

Collections.sort(list);//这里的list类型必须为 List<T>

//这里的sort(List<?>,new Comparator<?>()) 可自定义排序对象
Collections.sort(result, new Comparator<Record>() {
    @Override
    public int compare(Record o1, Record o2) {
        return Integer.parseInt(o2.get("id").toString())-  Integer.parseInt(o1.getStr("id").toString());
    }
});

java8中的排序:(这里是从小到大)

list.sort((o1, o2) -> o1.getAge() - o2.getAge());


Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。

序号方法描述
1boolean hasMoreElements( )
 测试此枚举是否包含更多的元素。
2Object nextElement( )
如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
import java.util.Vector; 
import java.util.Enumeration; 
public class EnumerationTester { 
    public static void main(String args[]) { 
        Enumeration<String> days; 
        Vector<String> dayNames = new Vector<String>(); 
        dayNames.add("Sunday"); 
        dayNames.add("Monday"); 
        dayNames.add("Tuesday"); 
        dayNames.add("Wednesday"); 
        dayNames.add("Thursday"); 
        dayNames.add("Friday"); 
        dayNames.add("Saturday"); 
        days = dayNames.elements(); 
        while (days.hasMoreElements()){ 
            System.out.println(days.nextElement()); 
        } 
    } 
}

//遍历结果为:
//Sunday
//Monday
//Tuesday
//Wednesday
//Thursday
//Friday
//Saturday

与前端进行交互:

var form = $("#form").serializeJson();
$.ajax({
	type: "POST",
	data:form,//form表单中的参数
	dataType: "json",
	url: url,//url
	async : false,
	success:function(data){
        console.log(data);	
	}
});
	
public Object text(HttpServletRequest request){
Map<String, Object> map = new HashMap<String,Object>();
//得到表单中所有参数
Enumeration<?> temp = request.getParameterNames();
if (null != temp) {
    while (temp.hasMoreElements()) {//测试此枚举是否包含更多元素
    //循环得到参数的code与value
    String en = (String) temp.nextElement();//返回下一个元素
    String value = request.getParameter(en);//元素的value
    System.out.println(en +"  " + value);
     }
   }
	map.put("code", "1");
	return map;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值