您的位置:首页 > 编程语言 > Java开发

javaee学习日记之java基础之集合类

2017-08-27 09:52 281 查看
List接口集合(有序,元素可重复)

(在迭代过程中不可修改集合,但是迭代器可以修改集合)

子类有不同实现,各有不同

ArrayList类:底层是数组,允许所有元素,包括null,修改对象慢,可以快速访问。

LinkedList类:底层是链表,修改对象快,访问慢。

package demo.cn.baidu;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class Test {
public static void main(String[] args) {
List<Integer> list = new LinkedList<>();//创建集合
list.add(1);//添加元素
list.add(2);
list.add(3);
list.add(4);
for (int i = 0; i < list.size(); i++) {//获取集合长度
System.out.println(list.get(i));//通过索引获取值
}
list.set(2, 5);//通过索引修改值
System.out.println("---------------");
Iterator<Integer> it = list.iterator();//迭代器
while (it.hasNext()) {//是否存在元素
System.out.println(it.next());//输出下一个元素(从0-(size()-1))
}
list.set(0, 10);
System.out.println("---------------");
for (int i : list) {//增强for底层是迭代器
System.out.println(i);
}
}
}


Set接口集合(无序,没有重复元素(对应八大包装类型和String进行栈内存和内容判断,(其它对象就进行栈内存判断)))

(在迭代过程中不可修改集合,但是迭代器可以修改集合)

子类有不同实现,各有不同

HashSet类:底层是哈希表,通过哈希值和equals()确定唯一性

TreeSet类:底层是红黑树,有顺序。

package demo.cn.baidu;

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

public class Test {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();//创建集合
set.add(5);//添加元素
set.add(5);
Iterator<Integer> it = set.iterator();//迭代器
while(it.hasNext()){//是否存在元素
System.out.println(it.next());//得到元素
}
System.out.println("-----------------");
Set<String> sets = new HashSet<>();
String s1 = new String("Hello");
String s2 = new String("Hello");//改变地址
String s3 = "Hello";
sets.add(s1);
s1 = "Java";//改变内容
sets.add(s1);
sets.add(s2);
sets.add(s3);
for(String s:sets){
System.out.println(s);
}
System.out.println("-----------------");
Set<Tool> set2 = new HashSet<>();
Tool tool = new Tool("Tom",25);
Tool tool2 = new Tool("Tom",25);//改变地址
set2.add(tool);
set2.add(tool2);
tool.setName("Jom");//改变内容
tool.setAge(28);
set2.add(tool);
System.out.println(set2.size());
}
}


List和Set有共同父接口Collection

Map接口集合(键值对)

子类有不同实现,各有不同

HashMap:基于哈希表实现,查找速度快,添加快

TreeMap:映射存在顺序。

package demo.cn.baidu;

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

public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();//创建
map.put("Tom", "man");//添加
map.put("Jim", "woman");
map.put("Zmi", "woman");
for (Map.Entry<String, String> ent : map.entrySet()) {
System.out.println(ent.getKey() + ":" + ent.getValue());
}
System.out.println("-------------------");
for (String s : map.keySet()) {
System.out.println(s + ":" + map.get(s));//获取键,通过键获取值
}
System.out.println("-------------------");
Iterator<Map.Entry<String, String>> ent = map.entrySet().iterator();
while (ent.hasNext()) {
Map.Entry<String, String> entry = ent.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: