标签:rgs 位置 imp print out try 数据 意思 sublist
java集合(list, set, map)常用方法
1.
集合:有一堆数据要存:
[name=‘小赵‘ , age=18, sex=‘女‘]
[name=‘小钱‘ , age=19, sex=‘女‘]
[name=‘小孙‘ , age=20, sex=‘女‘]
[name=‘小李‘ , age=21, sex=‘女‘]等等,
这样一条一条的数据就能够用集合存起来,成为集合的一条条记录,
例如用list来存,存的形式就如下:
list = {[name=‘小赵‘ , age=18, sex=‘女‘], [name=‘小钱‘ , age=19, sex=‘女‘], [name=‘小孙‘ , age=20, sex=‘女‘], [name=‘小李‘ , age=21, sex=‘女‘]};
然后可以根据list.get(i)来分别取值(记录)啦。
2.
List特点:元素有放入顺序,元素可重复,因为有序,可以用下标来取得想要的值。
Set特点:元素无放入顺序,元素不可重复,因为无序,无法用下标来取得想要的值。
Map特点:元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Key(键)唯一,重复会把前面的覆盖掉。用键取值,不用下标。
3.
list常用方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Iterator;
public class TestList {
public static void main(String[] args){
List<String> testList = new ArrayList<String>();
testList.add("索引0");//添加,下标从0开始
testList.add("索引1");
testList.add("索引2");
testList.add("索引3");
testList.add("索引4");
testList.add("索引0");//索引5
/*******1根据元素索引位置(查看元素索引)********/
// System.out.println(testList.indexOf("索引0"));//查看元素索引,输出 0
// System.out.println(testList.lastIndexOf("索引0"));//查看元素索引,输出 5
/************2获取元素************/
// String str = testList.get(1);//获取元素,索引1
// System.out.println(str);
/**********3删除************/
// System.out.println(testList.remove(2));//删除,输出索引2
// System.out.println(testList.remove("索引2"));//删除,输出true
/*********4遍历***********/
for(String s : testList){//遍历方法1
System.out.println(s);
}
// for(int i=0;i<testList.size();i++){//遍历方法2
// System.out.println(testList.get(i));
// }
// System.out.println(testList.size());//6,size()值为元素个数6
// Iterator it = testList.iterator();//遍历方法3
// while(it.hasNext()) {//迭代器遍历
// Object obj = it.next();
// System.out.println(obj);
// }
/************5是否包含某个元素*************/
// if(testList.contains("索引1")){
// System.out.println("包含");//输出包含
// }else{
// System.out.println("不包含");
// }
// System.out.println(testList.contains("索引1"));//输出true
/************6替换(根据下标索引)******************/
// System.out.println(testList.set(5,"索引5"));//根据索引改值,输出索引0,先输出后变值
// System.out.println(testList.get(5));//输出索引5
/*************7添加(根据下标添加,插入)************/
// testList.add(5,"索引5");//根据索引加值,输出索引5,原来索引5位置和之后的向后移一位
// System.out.println(testList.get(5));//输出索引5
// System.out.println(testList.get(6));//输出索引0
/***********8截取(包前不包后)************/
// List<String> list1 = new ArrayList<String>();
// list1=testList.subList(1, 4);//截取,输出索引1,索引2,索引3。包前不包后(下标)
// for(String s : list1){
// System.out.println(s);
// }
/*********9是否为空**********/
// System.out.println(testList.isEmpty());//判断是否为空,输出false
/********10对列表元素进行迭代返回Iterator集合对象(常用于遍历)**************/
// Iterator it = testList.iterator();//见遍历
// System.out.println(testList.iterator());//这么输出没啥意思,只是看看输出结果,返回Iterator集合对象,输出java.util.ArrayList$Itr@15db9742
/*********11将集合转换为字符串**********/
// String str=testList.toString();//转换成字符串不是数组,输出[索引0, 索引1, 索引2, 索引3, 索引4, 索引0]
// System.out.println(str);
/*********12将集合转换为数组***********/
// System.out.println(testList.toArray()[1]);//转换成数组,输出索引1
// Object[] obj=testList.toArray();//转换成数组
// System.out.println(obj[1]);//输出索引1
/********13去重复***********/
//第一种方法通过循环做, 根据remove方法去重复.
// for (int i = 0; i <testList.size()-1; i++) {
// for (int j = testList.size()-1; j >i; j--) {
// if (testList.get(j).equals(testList.get(i))) {
// testList.remove(j);
// }
// }
// }//关于控制台输出的[索引0, 索引1, 索引2, 索引3, 索引4]这种形式不是数组,是集合
// System.out.println(testList);//输出[索引0, 索引1, 索引2, 索引3, 索引4]去掉了重复的"索引0"
//第二种方法通过frequency方法去重复
// List<String> paramList=new ArrayList<String>();
// for (String s:testList) {
// if (Collections.frequency(paramList, s)<1) {
// paramList.add(s);
// }
// }
// System.out.println(paramList);//输出[索引0, 索引1, 索引2, 索引3, 索引4]去掉了重复的"索引0"
}
}
set常用方法:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class TestSet {
public static void main(String args[]){
Set<String> testSet = new HashSet<String>();
testSet.add("索引0");//添加,下标从0开始
testSet.add("索引1");
testSet.add("索引2");
testSet.add("索引3");
testSet.add("索引4");
// testSet.add("索引0");//false,testSet集合里没它,.size()还是5
// System.out.println(testSet.add("索引0"));//false,不能添加重复数据
/**********1集合大小*************/
// System.out.println(testSet.size());//5
/**********2哈希码值,固定的***********/
// System.out.println(testSet.hashCode());
/*************3删除*************/
// testSet.remove("索引3");
/************4清空*****************/
// testSet.clear();
/***********5遍历(无序(不能根据下标索引),不重复)************/
//for-each遍历整个集合
// for(String value : testSet) {//遍历方法1
// System.out.println(value);
// }
//iterator方法
// Iterator<String> value=testSet.iterator();//遍历方法2
// while(value.hasNext()) {
// String s=value.next();
// System.out.println(s);
// }
/**********6是否包含***********/
// System.out.println(testSet.contains("索引3"));//true
/*******7是否为空*************/
// System.out.println(testSet.isEmpty());//false
/**********8集合转换成数组(数组可以下标遍历)********/
// Object[] obj=testSet.toArray();
// for(int i=0;i<obj.length;i++)
// System.out.println(obj[i]);
/**********9上 集合转换成字符串************/
String str=testSet.toString();//转化的字符串使用逗号隔开的,输出[索引4, 索引3, 索引0, 索引2, 索引1]
System.out.println(str);
/**********9下 字符串转化成数组***************/
String str2[]=str.split(",");
System.out.println(str2[2]);
}
}
map常用方法:
import java.util.Map.Entry;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestMap {
public static void main(String []args){
Map<String,String> testMap = new HashMap<String,String>();
// Map testMap=new HashMap(); //这么写也可以
testMap.put("00", "索引0");//添加,
testMap.put("01", "索引1");
testMap.put("02", "索引2");
testMap.put("03", "索引3");
testMap.put("04", "索引4");
testMap.put("00", "索引5");//key唯一,重复会把前面的覆盖掉put(key,value)
// System.out.println(testMap);//{00=索引5, 01=索引1, 02=索引2, 03=索引3, 04=索引4}
/*********1集合大小**********/
// System.out.println(testMap.size());//5,覆盖掉
/**********2获取(根据 key,不根据下标)*************/
// System.out.println(testMap.get("00"));//索引5
/************3只获取value值***************/
// Collection values = testMap.values();
// System.out.println("map实例中所有value为:"+values);//map实例中所有value为:[索引5, 索引1, 索引2, 索引3, 索引4]
/************4只获取key值***************/
// Set set=testMap.keySet();
// System.out.println("map实例中所有key为:"+set);//map实例中所有key为:[00, 01, 02, 03, 04]
/*********5是否包含value**************/
// System.out.println(testMap.containsValue("索引2"));//true
/***********6是否包含key*************/
// System.out.println(testMap.containsKey("03"));//true
/*************7根据key获取value*************/
// Object obj = testMap.get("02");
// System.out.println("values为:"+obj);//values为:索引2
/************8删除****************/
// System.out.println(testMap.remove("00","索引0"));//false,没有这个
// testMap.remove("00");
/**********9清空***********/
// testMap.clear();
/*****************10合并***************/
// Map<String,String> testMap2 = new HashMap<String,String>();
// testMap2.put("00", "索引A");
// testMap2.put("06", "索引B");
// testMap2.put("07", "索引C");
// testMap.putAll(testMap2);//key相同的,testMap被覆盖
// System.out.println(testMap);//{00=索引A, 01=索引1, 02=索引2, 03=索引3, 04=索引4, 06=索引B, 07=索引C}
// System.out.println(testMap2);//{00=索引A, 06=索引B, 07=索引C}
/*****************11遍历*****************/
Set kset = testMap.keySet();//方法1,将Map转成Set集合(keySet()),通过Set的迭代器取出Set集合中的每一个元素
Iterator it = kset.iterator();
while (it.hasNext()) {
String key = (String)it.next();
String value = testMap.get(key);
System.out.println("key=" + key + " value=" + value);
}
// Collection col = testMap.values();//方法2,只有value,不太好
// Iterator it = col.iterator();
// while (it.hasNext()) {
// String value = (String)it.next();
// System.out.println(" value=" + value);
// }
// Set set = testMap.entrySet();//方法3,
// Iterator it = set.iterator();
// while (it.hasNext()) {
// // 返回的是封装了key和value对象的Map.Entry对象
// Entry en = (Entry)it.next();
// // 获取Map.Entry对象中封装的key和value对象
// String key = (String)en.getKey();
// String value = (String)en.getValue();
// System.out.println("key=" + key + " value=" + value);
// }
}
}
标签:rgs 位置 imp print out try 数据 意思 sublist
原文地址:https://www.cnblogs.com/zyhl/p/14410778.html