java学习笔记之java集合

电玩女神 2023-10-10 15:43 115阅读 0赞

概念:集合类主要负责保存、封装其他数据,因此集合类也被称为容器类。

1.储存对象可以考虑:1数组2集合。

2.数组储存对象的特点。student[] stu=new student [20];

弊端1.一旦创建,其长度不变。2.真实的数组存放的对象的个数是不可知的。

3.集合:分为collection和map两种体系

注意:

①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。

②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。

③、集合可以存放不同类型,不限数量的数据类型。

Collection接口:

List接口:存储元素无序、不可重复的集合 —-类似高中的“集合”

-—ArrayList(主要的实现类),LinkedList,vector

Set接口:存储元素有序,可重复的集合 —-”动态”数组(无序性!=随机性)

-—-HashSet,LinkedHashSet,TreeSet

Collection使用的例子:

添加元素:collection.add(””);

删除指定元素:collection.remove(””);

删除所有元素(collection.clear): Collection c = new ArrayList(); c.add(“Bob”); collection.removeAll(c);

判断是否为空:collection.isEmrty();

判断集合中的元素是否完全相同:equals(Object obj)

利用增强for循环遍历集合: for(Object obj : collection){ System.out.println(obj); }

利用迭代器:Iterator: Iterator iterator = collection.iterator();

while(iterator.hasNext()){

Object obj = iterator.next();

System.out.println(obj);

}

1.Iterator:迭代器,它是Java集合的顶层接口(不包括 map 系列的集合,Map接口 是 map 系列集合的顶层接口)

Object next():返回迭代器刚越过的元素的引用,返回值是 Object,需要强制转换成自己需要的类型

   boolean hasNext():判断容器内是否还有可供访问的元素

   void remove():删除迭代器刚越过的元素

//产生一个 List 集合,典型实现为 ArrayList。

List list = new ArrayList();

//添加三个元素

list.add(“Tom”);

list.add(“Bob”);

list.add(“Marry”);

//构造 List 的迭代器

Iterator it = list.iterator();

//通过迭代器遍历元素

while(it.hasNext()){

Object obj = it.next();

System.out.println(obj);

}

2.ArrayList,List主要的实现类:

LIst常用方法:void add(int index, Object ele) :在指定的索引index为只添加元素ele(插)

Object get(int index) 获取指定的元素(查)

int indexOf(Object obj) :返回obj在集合中首次出现的位置,没有的话返回-1,(获得指定对象的索引)

int lastIndexOf(Object obj) :返回obj在集合中最后一次出现的位置,没有的话返回-1,

Object remove(int index) 删除指定索引位置的元素(删)

Object set(int index, Object ele) 设置指定索引位置的元素(改)

List subList(int fromIndex, int toIndex)返回从fromIndex到toindex结束的一个list

public void text(){

List list=new ArrayList();

list.add(121);

list.add(122);

list.add(new String(“AA”));

list.add(0,444);

System.out.println(list);//输出:444 121 122 AA

Object obj=list.get(1);

System.out.println(obj);//输出的是第二个元素:121

list.set(2, 1);

System.out.println(list);//输出:444 121 1 AA

int i=list.indexOf(1);

System.out.println(“索引为:”+i);//输出:2

System.out.println(list.indexof(126))//输出-1

System.out.println(list.subList(0,3));//输出444, 121, 1

}

3.HashSet,Set主要的实现类:(Set接口是Collection的子接口,set接口没有提供额外的方法)

特点:不能保证元素的顺序;不可重复;不是线程安全的;集合元素可以为 NULL;

Set hashSet = new HashSet();

//类A的equals方法总是返回true,但没有重写其hashCode()方法。不能保证当前对象是HashSet中的唯一对象

class A

{

public boolean equals(Object obj)

{

return true;

}

}

//类B的hashCode()方法总是返回1,但没有重写其equals()方法。不能保证当前对象是HashSet中的唯一对象

class B

{

public int hashCode()

{

return 1;

}

}

//类C的hashCode()方法总是返回2,且有重写其equals()方法

class C

{

public int hashCode()

{

return 2;

}

public boolean equals(Object obj)

{

return true;

}

}

public class HashSetTest

{

public static void main(String[] args)

{

HashSet books = new HashSet();

//分别向books集合中添加两个A对象,两个B对象,两个C对象

books.add(new A());

books.add(new A());

books.add(new B());

books.add(new B());

books.add(new C());

books.add(new C());

System.out.println(books);

}

}

Map接口:存储“键-值”对的数据;

1.具有映射关系“key-value对”的集合 —-类似于高中的“函数” y = f(x) (x1,y1) (x2,y2)。key相当于变量value相当于因变量。严格来说 Map 并不是一个集合,而是两个集合之间 的映射关系。

2.因为 Map 集合即没有实现于 Collection 接口,也没有实现 Iterable 接口,所以不能对 Map 集合进行 for-each 遍历。

Map遍历:

Map hashMap = new HashMap<>();

//添加元素到 Map 中

hashMap.put(“key1”, “value1”);

hashMap.put(“key2”, “value2”);

hashMap.put(“key3”, “value3”);

hashMap.put(“key4”, “value4”);

hashMap.put(“key5”, “value5”);

//删除 Map 中的元素,通过 key 的值

hashMap.remove(“key1”);

//通过 get(key) 得到 Map 中的value

Object str1 = hashMap.get(“key1”);

//可以通过 添加 方法来修改 Map 中的元素

hashMap.put(“key2”, “修改 key2 的 Value”);

//通过 map.values() 方法得到 Map 中的 value 集合

Collection value = hashMap.values();

for(Object obj : value){

//System.out.println(obj);

}

//通过 map.keySet() 得到 Map 的key 的集合,然后 通过 get(key) 得到 Value

Set set = hashMap.keySet();

for(String str : set){

Object obj = hashMap.get(str);

//System.out.println(str+”=”+obj);

}

//通过 Map.entrySet() 得到 Map 的 Entry集合,然后遍历

Set> entrys = hashMap.entrySet();

for(Map.Entry entry: entrys){

String key = entry.getKey();

Object value2 = entry.getValue();

System.out.println(key+”=”+value2);

}

System.out.println(hashMap);

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java学习笔记一Map集合

    Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。key和value之间存在单向一对一关系,即通过指定的key,总能找到唯

    相关 学习笔记Java集合——Collection

    集合:一种用来储存数据的容器。 数组也是一种存储数据的容器,既然已经有了数据,为什么还要有集合?实际中,我们很多时候并不知道数据规模(数据的量),而数组的长度在初始化时就要给

    相关 学习笔记Java集合——Map

    我们常会看到这样的一种集合:身份证号与个人,学号与学生个体,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即