list集合
ArrayList
List 接口的大小可变数组的实现,即长度可变的数组
ArrayList集合对象的创建:
ArrayList list =new ArrayList ();
ArrayList方法
添加对象:
boolean add(E e) ----将指定的元素添加到此列表的尾部
void add(int index, E element) -----将指定的元素插入此列表中的指定位置
boolean addAll(Collection<? extends E> c) ---将该 collection 中的所有元素添加到此列表的尾部
boolean addAll(int index, Collection<? extends E> c) ----从指定的位置开始,将指定 collection 中的所有元素插入到此列表中
删除对象
void clear() -----移除此列表中的所有元素
E remove(int index) -----移除此列表中指定位置上的元素
boolean remove(Object o) -----移除此列表中首次出现的指定元素(如果存在)
protected void removeRange(int fromIndex, int toIndex) -----移除 fromIndex(包括)和 toIndex(不包括)之间的所有元素
public boolean removeAll(Collection<?> c)-----删除和指定集合中所有相同的元素
public boolean retainAll(Collection<?> c)-----删除和指定集合中所有不相同的元素
替换对象
E set(int index, E element) -----用指定的元素替代此列表中指定位置上的元素
返回ArrayList的一个副本
Object clone()
查集合长度
int size() -----返回此列表中的元素数
调整实例容量
void trimToSize() -----将此 ArrayList 实例的容量调整为列表的当前大小
判断是否包含元素
boolean contains(Object o)
public boolean containsAll(Collection<?> c)-----包含指定 collection 中的所有元素
根据下标查元素
E get(int index) -----返回此列表中指定位置上的元素
根据元素查下标
int indexOf(Object o) -----返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1
int lastIndexOf(Object o) -----返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1
判断集合是否为空
boolean isEmpty()
比较ArrayList
public boolean equals(Object o)-----仅当指定的对象也是一个列表,两列表大小相同,所有元素一样才为true
ArrayList------>数组
Object[] toArray()-----按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组
<T> T[] toArray(T[] a)-----按适当顺序(从第一个到最后一个元素)返回数组的运行时类型所有元素
获取集合迭代器
public Iterator<E> iterator() -----返回以恰当顺序在此列表的元素上进行迭代的迭代器
public ListIterator<E> listIterator()-----返回此列表元素的列表迭代器(按适当顺序)
public ListIterator<E> listIterator(int index)-----返回从列表的指定位置开始next
的列表迭代器
ArrayList集合的字符串表示
public String toString()
通过 String.valueOf(Object) 可以将元素转换成字符串
集合的反转
Collections.reverse(list);反转排序,先输出列表最后一个元素
集合(列表集合) / 数组的排序
方法一:
1、排序的元素类必须实现java.lang.Comparable接口:public interface Comparable<T>
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法
2、对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
例子:
public class User {
private String id;
private int age;
get\set方法略
}
实现 User集合的按年龄排序
public class User implements Comparable<User>{
private String id;
private int age;
get\set方法略
public int compareTo(Object o) { //实现Comparable 接口的排序方法
// return this.age - ((User) o).getAge(); //对int类型属性排序
return this.getName().compareTo(((User) o).getName());//对String属性排序
}
}
ArrayList<User> list=new ArrayList<User>();
list .add(user);
Collections.sort(list); //集合元素升序排序
Collections.sort(list, Collections.reverseOrder());//集合元素降序排列
User[] users = new User[] { new User("a", 30), new User("b", 20) };
Arrays.sort(users); //数组排序
方法二:
1、实现一个java.util.Comparator接口
2、
public class User implements Comparator<Person >{
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
}
ArrayList<User> list=new ArrayList<User>();
list .add(user);
Comparator<Person> ascComparator = new User(); //创建升序对象
Collections.sort(list, ascComparator);// 利用Collections类静态工具方法对集合List进行排序
Comparator<Person> descComparator = Collections .reverseOrder(ascComparator);// 从升序排序对象产生一个反转(降序)的排序对象
Collections.sort(list, descComparator);
常用方法:
集合复制,java默认的复制规则是浅层复制(即只复制了集合里的对象引用,并没有复制集合里对象的本身)
集合复制有2种方式:
1、clone()-----是Object定义的 //只能复制本类型
ArrayList<Foo> list = new ArrayList<Foo>();
ArrayList<Foo> list = (ArrayList<Foo>) list.clone();
2、复制构造器 //可在不同类型的集合间复制(继承自Map的集合同继承自Collection的集合不能相互复制,结构不同)
Map map = new HashMap(); --------Map map2 = new HashMap(map);
List list = new ArrayList();--------List list2 = new LinkedList(list);
--------LinkedList<Foo> list2 = new LinkedList<Foo>(list);
--------HashSet<Foo> set = new HashSet<Foo>(list);
集合增删改查操作:
ArrayList list = new ArrayList();
list.add("tom");
list.add(new Date());
list.remove("tom");//按对象删除,默认调用equals()比较 (remove()方法是有返回值的,返回被删除的元素)
list.remove(0); //按序号删除
list.set(0,"king");//将第一个对象修改为“king”
int i=list.indexOf("tom");//查询"tom"元素的下标
集合和集合之间的操作:(和、交、差)
list.addAll(list2); //将两集合合并
list.removeAll(list2); //将list中和list2相同的元素删除
list.retainAll(list2); //将list中和list2相同的元素保留
list.isEmpty(); //判断是否为空集 (空集和null不一样)
数组------〉List
String[] names = {"A","B","C"};
List list = Arrays.asList(names); //list是只读list,不能增删操作
list = new ArrayList(list); //复制为全功能list,可以增删读操作
Set set = new HashSet(list); //
集合-------〉数组
集合转为Object[]:
Object[] ary = list.toArray();
集合转为指定类型数组:
String[] ary = (String[])list.toArray(new String[]{});
集合迭代:
是一种遍历算法
1) java 使用 Iterator 接口描述了迭代模式操作Iterator 中的方法,与门为 while 循环设计
2) Iterator 的实例可以从集合对象获得,是这个集合的一个元素序列视图,默认包含一个操作游标(在第一个元素之前)
? hasNext()方法,可以检查游标是否有下一个元素
? next() 方法,移动游标到下一个元素,并丏返回这个元素引用使用 while 循环配合这个两个方法, 可以迭代处理集合的所有元素
3) 迭代时可以使用迭代器 remove() 方法删除刚刚迭代的元素在迭代过程中
? 迭代时不能使用集合方法(add, remove, set) 更改集合元素!
Collection<String> eggs = new HashSet<String>();
egg.add("鸡蛋");
egg.add("鸭蛋");
Iterator<String> it = eggs.iterator();//it是eggs的集合的视图(另一种外观)
it =["鸡蛋" ,"鸭蛋"] //it是顺序结构,含有一个游标,在第一个元素之前
while(it.hasNext()){ //检查当前游标是否有下一个
String egg = it.next(); //移动游标,返回下一个
}
hasNext()和 next()方法是模式化的,配合 while 循环使用
注意:每调用一次 next(),游标会向后移动一位
remove()方法一定要在 next()方法后执行,删除的是 next()返回的元素
集合的工具类 Collections **
同数组的工具类 Arrays 相同,集合的工具类为 Collections,其中提供了许多的方法,诸如排序、
二分查找、打乱、填充等操作。
排序:
Collections.sort(new ArrayList());
二分法查找:
int index = Collctions.binarySearch(new ArrayList(),要查找的对象);
乱序:
Collctions.shuffle(new ArrayList());
Comparable 和 Comparator *
Comparable
1、 表示可以比较的(用于类实现)
2、 实现这个接口表示:这个类的实例可以比较大小,可以进行自然排序
3、 conpareTo() 返回正数表示大, 返回负数表示小, 返回 0 表示相等
4、 Comparable 的实现必须不 equals() 的结果一致,就是相等的对象时候, 比较结果一定是 0!
Comparator
1、 比较工具
2、 用于临时定义比较规则,丌是默认比较规则
1)String 重写的compareTo()方法:
int a ="Tom".compateTo("Jerry");
2)按自定义比较规则排序:
class ByLength implements Comparator<String>{
public int compare(String o1 ,String o2){
return -(o1.length() - o2.length());
}
}
List<String> names = new ArrayList<String>();
names.add("Tom");
names.add("Toms");
ByLength byLength =new ByLength();
Collections.sort(names,byLength);
set集合
map集合
HashMap 还有一些常用方法,请参照 API 练习
? clear()
? containsKey(Object key)
? containsValue(Object value)
? get()
? isEmpty()
? keySet() 返回所有的 key(注意:返回值都放入 set 集合中)
? put(key , value) 向 Map 中加入元素
? remove(Object o)
? size()
Map迭代:
对 key 进行迭代 map.keySet();
对 value 进行迭代 map.values();
对 key:value 进行迭代 map.entrySet();
Set<Character> keys = map.keySet();
Collection<Integer> values = map.values();
Set<Entry<Character,Integer>> entrySet = map.entrySet();//返回键值对集合
ArrayList<Entry<Character,Integer>> list = new ArrayList<Entry<Character,Integer>>(entrySet);//复制为List集合(便于排序)
Collections.sort(list,new ByValue());//按指定规则排序
class ByValue implements Comparator<Entry>{
public int compare(Entry o1,Entry o2){
return (Integer) o2.getValue() - (Integer) o1.getValue();
}
}
Map.Entry 类型 Entry 就是键值对[key:value],通过 map.entrySet()方法获得
class ByValue{}最好写为静态内部类
相关推荐
它会扫描指定的JAR文件集合,找出其中重复的类,帮助开发者识别并解决潜在的问题,避免类加载异常或者运行时错误。 3. **find-in-jars** 在大型项目中,可能需要在众多的JAR文件中搜索特定的类或资源。手动搜索...
MongoDB Java驱动程序是Java开发者用来与MongoDB数据库进行交互的重要工具。MongoDB是一个流行的开源、文档型数据库系统,而`mongo-java-driver`是官方提供的Java API,允许开发者在Java应用程序中执行各种数据库...
4. 其他通用工具:如字符串处理、日期时间操作、集合操作等实用工具类,简化常见的编程任务。 在实际应用中,开发者可以利用这些工具来提高代码的效率和质量,减少重复工作。例如,通过Mchange Commons的数据库连接...
Java 8 OpenJDK AMD64 是一个针对64位AMD架构的开源Java开发和运行环境,由OpenJDK项目提供。OpenJDK是Java Development Kit(JDK)的一个实现,它遵循GNU General Public License(GPL)条款,旨在提供一个免费、...
---java---集合总结笔记
mongo-java-driver是java语言操作mongodb数据库的驱动包,封装了针对mongodb的相关操作 代码案例: 数据库和集合操作 连接MongoDB服务: MongoClient mongoClient = new MongoClient(host, port); 连接数据库: ...
"Java-Interview-超全集合github上评分最高的jiva面试题"就是一个这样的宝藏,它涵盖了Java编程语言、Git版本控制工具以及面试策略等多个方面的知识点。以下是这些内容的详细解析: 1. **Java基础** - **数据类型...
标题中的“protoc.exe和protobuf-java-2.5.0.jar集合”指的是Google开源的Protocol Buffers(简称protobuf)工具的两个关键组件。Protocol Buffers是一种高效的数据序列化协议,可帮助开发者在各种数据结构之间进行...
test java-集合
在Java中,"util"通常指的是实用工具,这类库往往提供了一系列辅助方法,涵盖了字符串处理、集合操作、日期时间处理、IO流操作等多个方面。例如,它可能包含对ArrayList、HashMap等集合类的扩展功能,或者提供更便捷...
2. **Java类库**: 这些是Java编程语言的核心API,包括基础类如集合框架、I/O流、网络编程、多线程等。Java SE(标准版)类库提供了一个广泛的接口和类,供开发者使用。 3. **编译器**: OpenJDK 包含了javac,这是...
http://www.cnblogs.com/codejackanapes/p/5496026.html是看了这篇文章之后自己搜集来的。暂时没用到,避免以后用到的时候走找不到,先上传了,需要的朋友也可以下载
后端开发JAVA-集合
java-核心类库-集合框架自学笔记.pdf
11.1java-集合
- **多线程并发工具的增强**:包括Fork/Join框架,用于并行计算,以及新的并发集合类。 - **类型推断**:在泛型中引入类型推断,简化代码编写。 - **字符串内联**:对字符串操作进行优化,提高性能。 - **动态...
Java-集合类框架参考图
JDK(Java Development Kit)是开发和运行Java应用程序所必需的软件集合,包括Java编译器、Java运行环境、类库以及各种工具。在这个特定的版本1.8u191中,"u191"代表的是更新版本号,意味着它是1.8主版本下的第191次...
11.2java-集合1
11.3java-集合2