精华内容
下载资源
问答
  • java list常用方法总结

    千次阅读 2021-02-27 09:12:19
    1.list截取指定部分List sublist = new ArrayList();sublist = new ArrayList(alist.subList(2, 4));2.在指定位置更新内容public ArrayList attrs = new ArrayList<>();//图层属性attrs.set(position, "string...

    1.list截取指定部分

    List sublist = new ArrayList();

    sublist = new ArrayList(alist.subList(2, 4));

    2.在指定位置更新内容

    public ArrayList attrs = new ArrayList<>();//图层属性

    attrs.set(position, "string");

    3.判断Arraylis中是否有重复内容

    public static void main(String[] args)

    {

    List list = new ArrayList();

    list.add("aa");

    list.add("bb");

    list.add("cc");

    list.add("dd");

    list.add("bb");

    list.add("ee");

    list.add("dd");

    list.add("ff");

    String temp = "";

    for (int i = 0; i < list.size() - 1; i++)

    {

    temp = list.get(i);

    for (int j = i + 1; j < list.size(); j++)

    {

    if (temp.equals(list.get(j)))

    {

    System.out.println("第" + (i + 1) + "个跟第" + (j + 1) + "个重复,值是:" + temp);

    }

    }

    }

    }

    4.java中集合(list)与数组(Array)的相互转化

    1) 数组转化为集合

    数组可以转化为List,但是除了显示功能以外,其他功能不能使用,因为通过转换得到的list不知到是什么类型的,可以通过集合的构造方法赋值,来使用其他的功能:

    String[] names ={"刘备","曹操","诸葛亮"};

    List list1 = Arrays.asList(names);

    list1 = new ArrayList(list1);

    2) 集合转化为数组

    Object[] ary1 = list3.toArray(new String[list3.size()]);

    //System.out.println(Arrays.toString(ary1));

    5.Hashmap转化成arraylist

    HashMap hashMap = iMarkerService.getBaiduMarkerMap();

    ArrayList markers = new ArrayList<>(hashMap.values());

    6.转换成字符串 join

    List userParms=new ArrayList();

    String userSql = String.join(" AND ", userParms);

    8.排序

    Collections.sort(warnRes, new Comparator() {//按终保日期排序

    public int compare(WarnRes warnRes0, WarnRes warnRes1) {

    return warnRes1.getZbrq().compareTo(warnRes0.getZbrq());

    }

    });

    展开全文
  • Java List 深度复制方法

    2021-02-12 10:02:10
    今天说一说Java List 深度复制的的问题,因为在工作上遇到了集合复制的问题,甚是头疼,网上众说纷纭,有一篇写的 比较清晰,今天来记录一下。这是下面要频繁使用的一个JavaBeanclass Person implements ...

    今天说一说Java List 深度复制的的问题,因为在工作上遇到了集合复制的问题,甚是头疼,网上众说纷纭,有一篇写的 比较清晰,今天来记录一下。

    这是下面要频繁使用的一个JavaBean

    class Person implements Serializable{

    private int age;

    private String name;

    public Person(){};

    public Person(int age,String name){

    this.age=age;

    this.name=name;

    }

    public int getAge() {

    return age;

    }

    public void setAge(int age) {

    this.age = age;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public String toString(){

    return this.name+"-->"+this.age;

    }

    }

    后台打印List集合的一个静态方法

    public static void printList(List list){

    System.out.println("---begin---");

    for(T t : list){

    System.out.println(t);

    }

    System.out.println("---end---");

    }

    后台打印数组的一个静态方法

    public static void printArray(T[] array){

    System.out.println("---begin---");

    for(T t : array){

    System.out.println(t);

    }

    System.out.println("---end---");

    }

    这是数据源集合,下面将通过各种方法企图来深复制该List集合中的元素

    List srcList=new ArrayList();

    Person p1=new Person(20,"123");

    Person p2=new Person(21,"ABC");

    Person p3=new Person(22,"abc");

    srcList.add(p1);

    srcList.add(p2);

    srcList.add(p3);

    1、遍历循环复制

    List destList=new ArrayList(srcList.size());

    for(Person p : srcList){

    destList.add(p);

    }

    printList(destList);

    srcList.get(0).setAge(100);

    printList(destList);

    上面的代码在add时候,并没有new Person()操作。因此,在srcList.get(0).setAge(100);破坏源数据时,目标集合destList中元素的输出同样受到了影响,原因是浅复制造成的。

    ---begin---

    123-->20

    ABC-->21

    abc-->22

    ---end---

    ---begin---

    123-->100

    ABC-->21

    abc-->22

    ---end---

    2、使用List实现类的构造方法

    List destList=new ArrayList(srcList);

    printList(destList);

    srcList.get(0).setAge(100);

    printList(destList);

    通过ArrayList的构造方法来复制集合内容,同样是浅复制,在修改了源数据集合后,目标数据集合对应内容也发生了改变。在查阅资料的过程中,看到有人说这种方式 能实现深复制,其实这是不对的。对于某些特殊的元素,程序运行的结果形似深复制,其实还是浅复制。具体一会儿再说。

    ---begin---

    123-->20

    ABC-->21

    abc-->22

    ---end---

    ---begin---

    123-->100

    ABC-->21

    abc-->22

    ---end---

    3、使用list.addAll()方法

    List destList=new ArrayList();

    destList.addAll(srcList);

    printList(destList);

    srcList.get(0).setAge(100);

    printList(destList);

    java.util.list.addAll()方法同样是浅复制

    ---begin---

    123-->20

    ABC-->21

    abc-->22

    ---end---

    ---begin---

    123-->100

    ABC-->21

    abc-->22

    ---end---

    4、使用System.arraycopy()方法

    Person[] srcPersons=srcList.toArray(new Person[0]);

    Person[] destPersons=new Person[srcPersons.length];

    System.arraycopy(srcPersons, 0, destPersons, 0, srcPersons.length);

    //destPersons=srcPersons.clone();

    printArray(destPersons);

    srcPersons[0].setAge(100);

    printArray(destPersons);

    List destList=Arrays.asList(destPersons);

    printList(destList);

    这种方式虽然比较变态,但是起码证明了System.arraycopy()方法和clone()是不能对List集合进行深复制的。

    5、使用序列化方法(相对靠谱的方法)

    public static List deepCopy(List src) throws IOException, ClassNotFoundException {

    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();

    ObjectOutputStream out = new ObjectOutputStream(byteOut);

    out.writeObject(src);

    ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());

    ObjectInputStream in = new ObjectInputStream(byteIn);

    @SuppressWarnings("unchecked")

    List dest = (List) in.readObject();

    return dest;

    }

    List destList=deepCopy(srcList);

    printList(destList);

    srcList.get(0).setAge(100);

    printList(destList);

    这是比较靠谱的做法,听说是国外某位程序大师提出来的。实际运行的结果也同样是正确的。

    ---begin---

    123-->20

    ABC-->21

    abc-->22

    ---end---

    ---begin---

    123-->20

    ABC-->21

    abc-->22

    ---end---

    其实,上面这些不靠谱List深复制的做法在某些情况是可行的,这也是为什么有些人说这其中的一些做法是可以实现深复制的原因。哪些情况下是可行(本质上可能还是不靠谱)的呢?比如List这样的情况。我上面使用的是List,它和List的区别就在于Person类和String类的区别,Person类提供了破坏数据的2个setter方法。因此,在浅复制的情况下,源数据被修改破坏之后,使用相同引用指向该数据的目标集合中的对应元素也就发生了相同的变化。

    因此,在需求要求必须深复制的情况下,要是使用上面提到的方法,请确保List中的T类对象是不易被外部修改和破坏的。

    https://blog.csdn.net/demonliuhui/article/details/54572908

    展开全文
  • Java List的深度拷贝方法

    千次阅读 2021-03-16 20:58:17
    为了了解真正的深拷贝是如何实现的,我终于在CSDN博客中找到了通过序列化实现List的深度拷贝的方法首先简单介绍一下序列化是什么:把对象转换为字节序列的过程称为对象的序列化,反之将字节序列恢复为对象的过程称为...

    为了了解真正的深拷贝是如何实现的,我终于在CSDN博客中找到了通过序列化实现List的深度拷贝的方法首先简单介绍一下序列化是什么:把对象转换为字节序列的过程称为对象的序列化,反之将字节序列恢复为对象的过程称为对象的反序列化。

    JDK类库中的序列化API:java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。

    java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。

    只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。

    对象序列化包括如下步骤:

    1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;

    2) 通过对象输出流的writeObject()方法写对象。

    对象反序列化的步骤如下:

    1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;

    2) 通过对象输入流的readObject()方法读取对象。

    建立一个Person类,实现Serializable接口

    5a31266c6adc

    Person

    下面两个函数写在测试类中

    5a31266c6adc

    其中函数deepCopy就是利用序列化实现深拷贝,可以看到序列化和反序列化的过程与上文过程相同,不同的地方是,该程序里面用的并非文件输出(输入)流,而是字节数组(ByteArray)输出(输入流),文件输出(输入)流会将转化的字符序列存储在文件中,而字节数组输出(输入)流则是将其保存在一个字节数组的临时变量中,仅占用内存空间,用后会自动清除。

    然后再看这里面使用的是List的泛型类,目的就是能够使已经实现Serializable接口的Person类能够被函数所调用然后进行拷贝。

    而实现深度拷贝的原理是什么呢?首先已经知道浅拷贝的原因是两个开辟的空间同时指向了同一个顺序表而导致对其中一个进行操作时,另一个也会受到影响。而当把对象序列化并存储后,再将其反序列化(反序列化返回的是一个对象),这时候反序列化得到的对象的存储位置已经与原对象不同了,也就是在反序列化后产生了两个一毛一样的对象,但它们并不是同一个。这时候将用于拷贝的空间用新的对象赋值即可实现深度拷贝。

    最后附上测试类和测试结果

    5a31266c6adc

    测试

    5a31266c6adc

    运行结果

    可以看出在对srcList进行修改后,拷贝得到的destList没有发生改变

    展开全文
  • JSONArray转javalist

    千次阅读 2020-12-29 17:00:45
    fastjson里的JSONArray类里的toJavaList方法: public <T> List<T> toJavaList(Class<T> clazz) { List<T> list = new ArrayList(this.size()); ParserConfig config = ParserConfig....
    fastjson里的JSONArray类里的toJavaList方法:
    public <T> List<T> toJavaList(Class<T> clazz) {
            List<T> list = new ArrayList(this.size());
            ParserConfig config = ParserConfig.getGlobalInstance();
            Iterator var4 = this.iterator();
    
            while(var4.hasNext()) {
                Object item = var4.next();
                T classItem = TypeUtils.cast(item, clazz, config);
                list.add(classItem);
            }
    
            return list;
        }

     

    用法如下:

    JSONArray registData = registObject.getJSONArray("data");
    List<RegistDto> registDtoList = registData.toJavaList(RegistDto.class);

     

    展开全文
  • 比如我有下面这样一个List,里面存放的是多个Employee对象。然后我想对这个List进行按照Employee对象的名字进行模糊查询。有什么好的解决方案么?比如我输入的查询条件为“wang”,那么应该返回只包含employee1的...
  • JavaList集合的常用方法

    千次阅读 2021-01-13 12:49:48
    10.JavaList集合的常用方法 List接口是继承Collection接口,所以Collection集合中有的方法List集合也继承过来。 1、void add(int index, E element) 在指定位置插入元素,后面的元素都往后移一个元素。 ...
  • javalist的使用方法

    2021-02-28 11:17:58
    LIST是个容器接口,可以理解为动态数组,传统数组必须定义好数组的个数才可以使用,而容器对象无须定义好数组下标总数,用add()方法即可添加新的成员对象,他可以添加的仅仅只能为对象,不能添加基本数据类型,容器...
  • java list自定义排序

    2021-02-26 09:40:11
    今天接到一个项目请求需要把从redis上拿到的数据在展示的时候进行排序 ,找到对应的代码发现是一个list。然后要根据storm计算的分数进行排序,分数的类型为String所以就需要用到自定义排序,出于项目机密,自己编写...
  • Java List遍历的3种方法

    千次阅读 2021-03-07 10:28:39
    Java List遍历的3种方法1.Iterator遍历list集合List list=new ArrayList();list.add("java1");list.add("java2");list.add("java3");for(Iteratorit = list.iterator(); it.hasNext(); ){....}这种方式在循环执行...
  • Java List转为String字符串的几种方法

    千次阅读 2021-02-12 14:58:22
    在实际开发中经常遇到List转为String字符串的情况,下面介绍几种方式。思路分析:1、对List进行遍历,然后拼接成String字符串;2、借助其他工具类进行辅助;代码实现package com.sjzt.controller;import org.apache....
  • Java集合类中的 List.contains() 方法用于判断列表中是否包含指定元素。如果列表中包含指定元素,则返回 true,否则返回 false。语法:contains(Object o)参数说明:o:要判断是否存在于列表中的元素。示例本示例...
  • java List集合

    2021-03-15 19:22:59
    List集合包括四种类,分别是ArrayList、LinkedList、Vector、Stack。ArrayList:元素的存储是顺序存储,可以根据数组的下标查询,查询速度快,但是在删除和插入元素时将慢,需要移动大量的元素。public voidTest1(){...
  • Java——List方法,获取子集发布时间:2019-01-08 20:58,浏览次数:921, 标签:JavaListpackage day04; import java.util.ArrayList; import java.util.List; /** * List方法* 获取子集 * @author Administrator * *...
  • java List删除指定元素的三种方法

    千次阅读 2020-12-21 22:03:22
    java List删除指定元素有3种方法,分别是普通for循环,增强for循环以及原生的Iterator迭代器循环来删除list中指定的某个元素,非常的简单。1:普通for循环遍历list,并删除指定的元素。Listlist=newArrayList();list...
  • java List.subList方法中的超级大陷阱

    千次阅读 2021-03-08 10:12:29
    ArrayList 中 subList 的基本用法:subList(fromIndex:int,toIndex:int):List返回从fromIndex到toindex-1 的 子列表在使用集合中,可能常常需要取集合中的某一部分子集来进行一下操作,于是subList这个方法就映...
  • Java List 快速搜索对象

    千次阅读 2021-02-27 10:10:19
    比如现在有一个需求现在有一个List 里面装Student 对象 我们想找出这个List 对象里面student name=小明的对象 我想很多同学会像以前的我一样变量List 然后去比较 但是这样处理毕竟效率不高 所以今天查资料总结下List...
  • Java list修改某个元素值的方法

    千次阅读 2021-07-13 16:07:37
    修改list中下标为index对象的值:set(index, element) 增添:add(index, element)
  • JAVA List合并集合

    千次阅读 2021-03-04 07:43:39
    import java.util.List;public class test {public static void main(String[] args) throws Exception {/*测试合并两个类型相同的list*/List list1 = new ArrayList();List list2 = new ArrayList(...
  • 集合类中的 List.size() 方法以 int 形式返回列表中元素的个数。语法:size()返回列表中元素的个数。如果列表中元素的个数超过 2 147 483 647,则返回 2 147 483 647。示例本示例使用 List 接口的实现类 ArrayList ...
  • Java List截取

    2021-03-15 14:32:35
    Java List截取以下实例演示了如何使用 Collections 类的 indexOfSubList() 和 lastIndexOfSubList() 方法来查看子列表是否在列表中,并查看子列表在列表中所在的位置:Main.java 文件import java.util.*;public ...
  • Java list集合排序

    千次阅读 2021-02-27 22:56:36
    1.简单类型:Collections.sort(list, new Comparator(){public int compare(int o1, int o2) {return o1 - o2;}});Collections.sort(list, new Comparator(){public int compare(String o1, String o2) {return o1....
  • Java创建List的4种方法

    千次阅读 2021-02-12 09:46:46
    1、通过构造方法,例如:List list = new ArrayList<>();然后调用list.add增加元素,如果知道初始...但是这种方法构造出的List是固定长度的,如果调用add方法增加新的元素,会报异常:java.lang.UnsupportedO...
  • Java List 数据拷贝

    2021-02-12 16:17:45
    import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import...
  • //[张三, 2, wu] } 看输出的结果,removeAll是,移除另一个集合中包含在调用该方法的集合中的元素,如果不存在返回false,存在则调用该方法的集合被移除存在的元素。并返回true 说白了,就是移除它们的交集元素。并...
  • JavaList去重的四种方法

    千次阅读 2021-02-25 20:31:14
    JavaList去重的四种方法package com.lxz.test;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;/*** description: List去重* date: ...
  • 大家都知道java里面分为浅拷贝和深拷贝。举个简单的例子,区分一下浅拷贝和深拷贝的区别public class Address{private String address;public Address(String address){this.address = address;}public String ...
  • 集合类中的 List.subList() 方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作。返回列表中指定范围的子列表。语法:subList(int fromIndex,int toIndex)参数说明:fromIndex:用于指定新...
  • Java Stream 列表(List)操作的常用方法

    千次阅读 2021-03-04 01:37:35
    1、遍历操作(map)使用map操作可以遍历集合中的每个对象,并对其进行操作,map之后,用.collect(Collectors.toList())会得到操作后的集合。1)遍历转换为大写Listoutput=wordList.stream().map(String::toUpperCase)....
  • java将一个list里的数据转移到另外一个list,可以使用for语句,一次使用add方法,示例如下:ArrayList list1=new ArrayList();list1.add("1");list1.add("2");list1.add("3");ArrayList list2=new ArrayList();list2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,330,473
精华内容 532,189
关键字:

javalist方法

java 订阅