代码之家  ›  专栏  ›  技术社区  ›  gmhk

使arraylist为只读

  •  52
  • gmhk  · 技术社区  · 14 年前

    在Java中,你怎么能做一个 ArrayList 只读(这样就没有人可以在初始化后添加、编辑或删除元素)?

    4 回复  |  直到 6 年前
        1
  •  104
  •   Joe White    6 年前

    通过 ArrayList 进入之内 Collections.unmodifiableList() . 它返回指定列表的不可修改视图。只使用返回的这个 List ,而不是原来的 数组列表 .

        2
  •  4
  •   Neuron MonoThreaded    6 年前

    将列表对象传递给 Collections.unmodifiableList() . 请参阅下面的示例。

    import java.util.*;
    
    public class CollDemo
    {
        public static void main(String[] argv) throws Exception
        {
            List stuff = Arrays.asList(new String[] { "a", "b" });
            List list = new ArrayList(stuff);
            list = Collections.unmodifiableList(list);
            Set set = new HashSet(stuff);
            set = Collections.unmodifiableSet(set);
            Map map = new HashMap();
            map = Collections.unmodifiableMap(map);
            System.out.println("Collection is read-only now.");
        }
    }
    
        3
  •  1
  •   Neuron MonoThreaded    6 年前

    将集合对象传递给其等效的不可修改函数 Collections 班级。下面的代码显示了 unmodifiableList

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    
    public class Temp {
    
        public static void main(String[] args) {
    
            List<Integer> objList = new ArrayList<Integer>();
            objList.add(4);
            objList.add(5);
            objList.add(6);
            objList.add(7);
    
            objList = Collections.unmodifiableList(objList);
            System.out.println("List contents " + objList);
    
            try {
                objList.add(9);
            } catch(UnsupportedOperationException e) {
                e.printStackTrace();
                System.out.println("Exception occured");
            }
            System.out.println("List contents " + objList);
        }
    
    }
    

    同样,您也可以创建其他不可修改的集合

        4
  •  1
  •   Neuron MonoThreaded    6 年前

    您确定要使用 ArrayList 在这种情况下?

    也许最好先填充 数组列表 把你所有的信息,然后转换 数组列表 当Java程序初始化时进入最终数组。