Java中的C#List实现...

Wer*_*rCD 0 c# java list intellij-idea implements

我正在学习Java,而我正在尝试做一些我在C#中用Java做的事情.

目标是将类"MyItem"包装到"MyItems"列表中.这使得它更容易推理(MyItemsList<MyItem>... 更容易阅读/理解,或者说,我需要让它变得更复杂,比如IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>>...然后要求MyKVPDictionaries代替List<IEnumberaable<KeyValuePair<...>>>>>).

只是环顾四周......似乎C#允许你保留东西的默认实现(看下面,.Add只是工作).

看看Java ...有没有办法在c#中实现列表?或者我是否必须手动手动实施列表的各个部分?(.add,.list,.contains等).

下面我有一个Class......和一个List<Class>C#的"基本"实现.

class MyItems implements List<MyItem>用Java 实现真的还有更多的工作吗?或者我错过了一些简化过程的东西?

(Java代码只是MyItems.java通过IntelliJ使用Resharper"Auto Implement missing members"存根的类文件).

C#版.NetFiddle:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {       
        var myItems = new MyItems();
        myItems.Add(new MyItem("Hello"));
        myItems.Add(new MyItem(" "));
        myItems.Add(new MyItem("World"));
        myItems.Add(new MyItem("!"));

        foreach(var item in myItems)
            Console.Write(item.Name);
    }
}

public class MyItems : List<MyItem>
{

}

public class MyItem
{
    public MyItem(string name)
    {
        Name = name;
    }
    public string Name { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

Java Version start/stub:

package items;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class MyItems implements List<MyItem> {
    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public boolean contains(Object o) {
        return false;
    }

    @Override
    public Iterator<MyItem> iterator() {
        return null;
    }

    @Override
    public Object[] toArray() {
        return new Object[0];
    }

    @Override
    public <T> T[] toArray(T[] a) {
        return null;
    }

    @Override
    public boolean add(MyItem generatePreSignedUrl) {
        return false;
    }

    @Override
    public boolean remove(Object o) {
        return false;
    }

    @Override
    public boolean containsAll(Collection<?> c) {
        return false;
    }

    @Override
    public boolean addAll(Collection<? extends MyItem> c) {
        return false;
    }

    @Override
    public boolean addAll(int index, Collection<? extends MyItem> c) {
        return false;
    }

    @Override
    public boolean removeAll(Collection<?> c) {
        return false;
    }

    @Override
    public boolean retainAll(Collection<?> c) {
        return false;
    }

    @Override
    public void clear() {

    }

    @Override
    public MyItem get(int index) {
        return null;
    }

    @Override
    public MyItem set(int index, MyItem element) {
        return null;
    }

    @Override
    public void add(int index, MyItem element) {

    }

    @Override
    public MyItem remove(int index) {
        return null;
    }

    @Override
    public int indexOf(Object o) {
        return 0;
    }

    @Override
    public int lastIndexOf(Object o) {
        return 0;
    }

    @Override
    public ListIterator<MyItem> listIterator() {
        return null;
    }

    @Override
    public ListIterator<MyItem> listIterator(int index) {
        return null;
    }

    @Override
    public List<MyItem> subList(int fromIndex, int toIndex) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

shm*_*sel 7

Java的List类型是一个接口,是C#的对应物IList.如果要实现它,则必须从头开始编写大多数方法.C#具体List类的对应部分是Java ArrayList:

public class MyItems extends ArrayList<MyItem> {
Run Code Online (Sandbox Code Playgroud)